[JAVA] Versuchen Sie Spring Boot 1 (Umgebungskonstruktion ~ Tomcat-Start)

Einführung

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.

Java-Installation

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 Maven

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"

Starten Sie das Spring-Boot-Beispiel

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.

Am Ende

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

Versuchen Sie Spring Boot 1 (Umgebungskonstruktion ~ Tomcat-Start)
[Spring Boot] Umgebungskonstruktion (macOS)
Aufbau der Docker x Spring Boot-Umgebung
◆ Konstruktionsnotiz für Spring Boot + Gradle-Umgebung
[Frühling] Umweltbau
Spring Boot Umgebungskonstruktionsnotiz auf Mac
Aufbau der Spring Boot + Docker Java-Entwicklungsumgebung
Versuchen Sie Spring Boot von 0 bis 100.
Versuchen Sie es mit Spring Boot Security
Versuchen Sie Spring Boot auf dem Mac
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Versuchen Sie, Spring Boot auf Kubernetes auszuführen
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Konstruktionsmethode für die Java-Ausführungsumgebung (Tomcat @ Linux)
Erstellen einer Spring Boot-Entwicklungsumgebung in Vagrant
Spring Boot 2.0.0 startet den integrierten Tomcat nicht
[Umgebungskonstruktion] Spring Tool Suite 4-Installation (Mac)
Versuchen Sie, ScalarDB unter WSL Ubuntu (Environment Construction) auszuführen.
SameSite-Cookie im Spring Boot (Spring Web MVC + Tomcat)
Informationen zum Entwerfen einer Spring Boot- und Unit-Test-Umgebung
[Java] Umgebungskonstruktion
Konstruktionsverfahren für die JAVA + STS-Umgebung (Spring Tool Suite)
Versuchen Sie die LDAP-Authentifizierung mit Spring Security (Spring Boot) + OpenLDAP
Fordern Sie Spring Boot heraus
Erstellen Sie mit Gradle Spring Boot-Projekte nach Umgebung
Spring Boot Form
Versuchen Sie, die Migration mit Spring Boot Flyway zu automatisieren
Spring Boot Denken Sie daran
Erstellen Sie eine Spring Boot-Umgebung mit Windows + VS-Code
gae + frühlingsstiefel
Konstruktionsverfahren für LINE Bot x Java (Spring Boot)
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Aufbau einer Java-Entwicklungsumgebung (Mac + Plejaden All in One Eclipse 4.7 + Spring Boot + Gradle (Buildship))
In die Spring Boot-Anwendung integrierte Integration von Tomcat, Apache und WebSocket
Bitte beachten Sie, dass Spring Boot + Tomcat 8.5.8 nicht verwendet werden kann!
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
Versuchen Sie, OpenID Connect mit Keycloak (Spring Boot-Anwendung) zu verwenden.
SSO mit GitHub OAuth in der Spring Boot 1.5.x-Umgebung
Probieren Sie das Gesetz der Abhängigkeitsumkehr mit mehreren Spring Boot-Projekten aus
Probieren Sie gRPC im Spring Boot & Spring Cloud-Projekt (Mac OS) aus.
Stellen Sie das Spring Boot-Projekt in XAMPP für Tomcat bereit
Booten nach Umgebung mit Spring Boot of Maven
Erstellen Sie eine Java + Spring-Entwicklungsumgebung mit VirtualBox + Ubuntu (Xfce4).
Aufbau der Penronse-Umgebung [Windows]
SPRING BOOT Lernaufzeichnung 01
Frühlingsstiefel + Heroku Postgres
[Flattern] Ubuntu 20.04 Umgebungskonstruktion
Aufbau der Rails Docker-Umgebung
Schreiben von Frühlingsstiefel-Memos (1)
Erster Frühlingsstiefel (DI)
Spring Boot2 Spickzettel
Spring Boot Servlet-Zuordnung
Spring Boot-Lernverfahren
Schreiben von Spring Boot-Memos (2)
Java Entwicklungsumgebung Konstruktion
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Spring Boot 2.3 Verfügbarkeit von Anwendungen