Ich möchte ein Beispielprogramm mit Spring Boot schreiben. Als Referenz [Einführung in den Frühling](https://www.amazon.co.jp/Spring%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80- Frühlingsrahmen% E3% 81% AB% E3% 82% 88% E3% 82% 8BJava% E3% 82% A2% E3% 83% 97% E3% 83% AA% E3% 82% B1% E3% 83% BC% E3% 82% B7% E3% 83% A7% E3% 83% B3% E9% 96% 8B% E7% 99% BA-% E6% A0% AA% E5% BC% 8F% E4% BC% 9A % E7% A4% BENTT% E3% 83% 87% E3% 83% BC% E3% 82% BF / dp / 4798142476). Wir werden das hier vorgestellte System zur Reservierung von Konferenzräumen erstellen.
Lassen Sie uns Java installieren. Es gibt verschiedene Versionen, aber dieses Mal werden wir OpenJDK 8 verwenden. Wenn Sie WSL2 verwenden, können Sie es mit dem folgenden Befehl herunterladen.
WSL2
$ sudo apt install openjdk-8-jdk
Stellen Sie dann die Umgebungsvariablen ein. Lassen Sie uns zunächst überprüfen, wo Java installiert wurde.
WSL2
$ dpkg -L openjdk-8-jdk
***Abkürzung
/usr/lib/jvm/java-8-openjdk-amd64
***Abkürzung
Es gibt viele davon, aber Sie können "JAVA_HOME" in "/ usr / lib / jvm / java-8-openjdk-amd64" angeben. Nachdem wir den Pfad kennen, legen Sie die Umgebungsvariablen fest.
WSL2
$ sudo vi /etc/profile
/etc/Fügen Sie dem Profil Folgendes hinzu.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
Verwenden Sie den folgenden Befehl, um die Bash-Einstellungen wiederzugeben und zu überprüfen, ob die Installation abgeschlossen wurde.
WSL2
$ source /etc/profile
$ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-8u265-b01-0ubuntu2~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
Jetzt können Sie Java verwenden.
Installieren Sie als Nächstes Maven. Gradle scheint als Build-Tool beliebter zu sein, aber aufgrund der Umstände für Erwachsene verwende ich den guten alten Maven. Dies ist der einzige Befehl.
WSL2
$ sudo apt install maven
Lassen Sie uns die Installation überprüfen.
WSL2
$ mvn -v
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.8.0_265, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.19.104-microsoft-standard", arch: "amd64", family: "unix"
Erstellen wir nun ein Beispielprojekt für Spring Boot. Erstellen Sie zunächst ein geeignetes Verzeichnis. In meinem Fall habe ich Folgendes getan.
WSL2
$ cd ~
$ mkdir web-app
$ cd web-app
Erstellen Sie ein Beispielprojekt mit dem folgenden Befehl.
WSL2
$ mvn archetype:generate
***Unterlassung***
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 1672:
Wie wäre es mit. Es kommt viel Englisch heraus und ich fürchte, aber Sie können es ignorieren.
mvn archetype: generate
ist ein Befehl zum interaktiven Erstellen eines Projekts.
Wählen wir die Probe aus, die dieses Mal verwendet werden soll. Versuchen Sie, "Spring-Boot" einzugeben.
WSL2
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : spring-boot
Es gibt weniger Optionen als zuvor. (78 in meiner Umgebung)
Verwenden wir dieses Mal org.springframework.boot: spring-boot-sample-tomcat-archetyp (Spring Boot Tomcat-Beispiel)
.
In diesem Beispiel ist Tomcat integriert, sodass Sie Jar so ausführen können, wie es ist.
In meiner Umgebung wurde es als "68:" angezeigt. Geben Sie also "68" ein. (Sie sollten in der Lage sein, den Namen anzugeben)
WSL2
***Abkürzung
68: remote -> org.springframework.boot:spring-boot-sample-tomcat-archetype (Spring Boot Tomcat Sample)
***Abkürzung
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 68
Ich kann wieder viel Englisch sprechen, aber bitte nicht ablehnen. Sie können es ignorieren. Als nächstes werden Sie wie folgt gefragt.
WSL2
***Abkürzung
Define value for property 'groupId': com.rocorock
Define value for property 'artifactId': mvn-spring
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.rocorock: :
Confirm properties configuration:
groupId: com.rocorock
artifactId: mvn-spring
version: 1.0-SNAPSHOT
package: com.rocorock
Y: : y
Bei Maven müssen Sie "groupId", "artefaktId", "version", "package" angeben. Es wird im Paketnamen verwendet. Ich denke, dass im Wesentlichen alles in Ordnung ist. Wenn Sie die Eingabetaste so wie sie ist drücken, werden "Version" und "Paket" ohne Erlaubnis wiedergegeben. Ich werde diesmal keine Erklärung zu Mavens Einstellungselementen veröffentlichen, aber wenn Sie mehr über Maven erfahren möchten, empfehle ich dieses Buch. [Einführung in das Java Build Tool](https://www.amazon.co.jp/Java%E3%83%93%E3%83%AB%E3%83%89%E3%83%84%E3%83%BC % E3% 83% AB% E5% 85% A5% E9% 96% 80-Maven-Gradle-SBT-Bazel% E5% AF% BE% E5% BF% 9C / dp / 4798049387) Wenn die folgende Meldung auf der Konsole angezeigt wird, ist sie erfolgreich.
WSL2
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: spring-boot-sample-tomcat-archetype:1.0.2.RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.rocorock
[INFO] Parameter: artifactId, Value: mvn-spring
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.rocorock
[INFO] Parameter: packageInPathFormat, Value: com/rocorock
[INFO] Parameter: package, Value: com.rocorock
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: groupId, Value: com.rocorock
[INFO] Parameter: artifactId, Value: mvn-spring
[INFO] Project created from Archetype in dir: /home/tomoya/web-app/mvn-spring
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:26 min
[INFO] Finished at: 2020-09-06T16:51:46+09:00
[INFO] ------------------------------------------------------------------------
Packen wir die resultierende Datei.
WSL2
$ cd mvn-spring
$ mvn package
***Abkürzung
Results :
Failed tests:
SampleTomcatApplicationTests.testHome:53 expected:<Hello [World]> but was:<Hello [DESKTOP-F147IF8]>
NonAutoConfigurationSampleTomcatApplicationTests.testHome:82 expected:<Hello [World]> but was:<Hello [DESKTOP-F147IF8]>
Tests run: 2, Failures: 2, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.461 s
[INFO] Finished at: 2020-09-06T16:52:06+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test (default-test) on project mvn-spring: There are test failures.
[ERROR]
[ERROR] Please refer to /home/tomoya/web-app/mvn-spring/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Ich habe "BUILD FAILURE". Lassen Sie uns die Konsole überprüfen.
Failed tests:
SampleTomcatApplicationTests.testHome:53 expected:<Hello [World]> but was:<Hello [DESKTOP-F147IF8]>
NonAutoConfigurationSampleTomcatApplicationTests.testHome:82 expected:<Hello [World]> but was:<Hello [DESKTOP-F147IF8]>
Anscheinend schlägt der Test fehl. Es heißt "erwartet: <Hallo [Welt]>, war aber: <Hallo [DESKTOP-F147IF8]>", also korrigieren wir den Code so, dass er "Hallo Welt" zurückgibt. (Warum ich eine Fehlermeldung bekomme, obwohl es sich um ein Beispiel handelt ...) Überprüfen Sie zunächst den Testcode.
SampleTomcatApplicationTests.java
/*
* Copyright 2012-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.rocorock.tomcat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.IntegrationTest;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.boot.test.TestRestTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import static org.junit.Assert.assertEquals;
/**
* Basic integration tests for demo application.
*
* @author Dave Syer
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SampleTomcatApplication.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
@DirtiesContext
public class SampleTomcatApplicationTests {
@Value("${local.server.port}")
private int port;
@Test
public void testHome() throws Exception {
ResponseEntity<String> entity = new TestRestTemplate().getForEntity(
"http://localhost:" + this.port, String.class);
assertEquals(HttpStatus.OK, entity.getStatusCode());
assertEquals("Hello World", entity.getBody());
}
}
Da assertEquals (" Hello World ", entity.getBody ())
ein Fehlertest ist, ändern Sie ihn so, dass der Test hier erfolgreich ist.
HelloWorldService.java
/*
* Copyright 2012-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.rocorock.tomcat.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class HelloWorldService {
@Value("${name:World}")
private String name;
public String getHelloMessage() {
return "Hello World"; //Änderungsort
}
}
Dieses Mal habe ich es als "Hallo Welt" verfestigt, um den Test zu vermeiden. Es wurde im Wesentlichen nicht gelöst, aber es wird erst beginnen, wenn es vorerst funktioniert, also werde ich so weitermachen, wie es ist. Packen wir es noch einmal.
WSL2
$ mvn package
***Abkürzung
[INFO] Building jar: /home/tomoya/web-app/mvn-spring/target/mvn-spring-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.0.2.RELEASE:repackage (default) @ mvn-spring ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.288 s
[INFO] Finished at: 2020-09-06T17:00:47+09:00
[INFO] ------------------------------------------------------------------------
Diesmal war es erfolgreich. Bei Erfolg wird ein neuer Zielordner erstellt. Das ausführbare JAR wird hier gespeichert. Bewegen wir es sofort.
WSL2
$ ls
pom.xml src target
$ java -jar target/mvn-spring-1.0-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.0.2.RELEASE)
2020-09-06 17:01:19.928 INFO 5988 --- [ main] c.r.tomcat.SampleTomcatApplication : Starting SampleTomcatApplication on DESKTOP-F147IF8 with PID 5988 (/home/tomoya/web-app/mvn-spring/target/mvn-spring-1.0-SNAPSHOT.jar started by tomoya in /home/tomoya/web-app/mvn-spring)
2020-09-06 17:01:19.951 INFO 5988 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@414be896: startup date [Sun Sep 06 17:01:19 JST 2020]; root of context hierarchy
Sie sehen ein lustiges Startskript. Standardmäßig startet Tomcat auf Port 8080
, also greifen wir darauf zu.
Geben Sie in Ihrem Browser "http: // localhost: 8080" ein. Wenn Sie "Hallo Welt" sehen, sind Sie erfolgreich.
Drücken Sie Strg + C auf der Konsole, um Tomcat zu stoppen, und Sie sind fertig.
Ich sagte, dass ich eine App zur Reservierung von Besprechungsräumen erstellen möchte, aber ich habe das Tomcat-Beispiel fertig ausgeführt ... Ich möchte dieses Beispiel ab dem nächsten Mal erweitern und weiterentwickeln! (Wenn Sie frustriert sind, handelt es sich möglicherweise nicht um einen Artikel.)
Recommended Posts