많은 네티즌은 때때로 나에게 Spring Boot 프로젝트를 테스트하는 방법, 배치 방법 및 생산에 좋은 배포 솔루션이 있는지 여부를 묻습니다. 이 기사는 Spring Boot가 개발, 디버깅, 포장 및 마침내 제작 및 출시 방법을 소개합니다.
개발 단계
단위 테스트
개발 단계에서 가장 중요한 것은 단위 테스트입니다. 단위 테스트에 대한 SpringBoot의 지원이 완성되었습니다.
1. POM 패키지에 대한 스프링 부트 스타터 테스트 패키지 참조를 추가하십시오
<pectionency> <groupid> org.springframework.boot </groupid> <artifactid> 스프링 부트 스타터-테스트 </artifactid> <cope> test </scope> </fectionency>
2. 개발 및 테스트
가장 간단한 Helloworld를 예로 들어 보면 테스트 클래스의 클래스 헤드에 @runwith (SpringRunner.class) 및 @SpringBoottest 주석을 추가해야합니다. 테스트 방법의 상단에 @test를 추가하고 실행 방법을 마우스 오른쪽 버튼으로 클릭하십시오.
@RunWith (SpringRunner.class) @SpringBootTestPublic Class ApplicationTests {@test public void hello () {System.out.println ( "Hello World"); }}실제로 사용하면 테스트 및 검증을위한 프로젝트의 정상적인 사용에 따라 DAO 계층 코드 또는 서비스 계층 코드를 주입 할 수 있습니다. Spring-Boot-Starter-Test는 많은 기본 사용법을 제공하며, 더 드문 점은 컨트롤러 계층 테스트에 대한 지원을 추가한다는 것입니다.
// 결과 세트가 올바른 assert.asserTequals인지 간단하게 확인하십시오 (3, usermapper.getall (). size ()); // 결과 세트를 확인, prompt assert.asserttrue ( "오류, 올바른 반환 값은 200", status == 200); assert.assertfalse ( "오류, 올바른 반환 값은 200", 상태! = 200);
Mockmvc는 컨트롤러 계층의 테스트를 지원하기 위해 도입되었습니다. 간단한 예는 다음과 같습니다.
공개 클래스 hellocontrolertests {private mockmvc mvc; // execution 초기화 @public void setup ()이 예외를 던지기 예외 {mvc = mockmvcbuilders.standalonesetup (new HelloController ()). build (); } // 컨트롤러가 정상적으로 반응하는지 확인하고 반환 결과를 인쇄하고 @test public void gethello () 예외 {mvc.perform (mockmvcrequestBuilders.get ( "/hello"). accept (mediaType.application_json)) .Andexpect (mockMvcresultMatters.status (). isok (). isok (). .anddo (mockmvcresulthandlers.print ()) .andreturn (); } // 컨트롤러가 정상적으로 반응하는지 확인하고 반환 결과가 올바른지 여부를 결정합니다. @Test public void testhello ()는 예외 (mvc.perform (mockmvcrequestBuilders.get) ( "/hello"). accept (mediaType.application_json)). .andexpect (content (). String (equalTo ( "hello"). accept (mediaType.application_json))단위 테스트는 코드를 확인하는 첫 번째 장벽입니다. 코드의 일부를 작성할 때마다 단위 테스트 습관을 개발해야합니다. 테스트하기 전에 모두 통합 될 때까지 기다리지 마십시오. 통합 후 전체 작업 효과에 더주의를 기울이기 때문에 코드 하단의 버그를 쉽게 놓칠 수 있습니다.
통합 테스트
전반적인 개발이 완료된 후 통합 테스트가 입력됩니다. Spring Boot 프로젝트의 시작 입구는 응용 프로그램 클래스에 있습니다. 실행 메소드를 직접 실행하여 프로젝트를 시작할 수 있습니다. 그러나 디버깅 과정에서 코드를 지속적으로 디버깅해야합니다. 코드가 수정 될 때마다 서비스를 수동으로 다시 시작 해야하는 경우 매우 번거 롭습니다. Spring Boot는 핫 배치 지원을 매우 중요하게 제공하며 웹 프로젝트에서 디버깅 및 사용에 매우 편리합니다.
POM은 다음 구성을 추가해야합니다.
<pectionies> <pectionency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-devtools </artifactid> <selectional> true </옵션> </fexendencies> <build> <plugins> <groupId> org.springframewort.boot> <Artifactid> Spring-Boot-Maven-Plugin </artifactid> <fork> true </fork> </configuration> </plugin> </plugins> </build>
위 구성을 추가 한 후 프로젝트는 핫 배포를 지원하며 통합 테스트에 매우 편리합니다.
생산 및 온라인 가동
실제로이 단계는 비교적 간단하고 일반적으로 두 가지 유형으로 나뉘어져 있어야한다고 생각합니다. 하나는 항아리 패키지에 패키지를 포장하여 직접 실행하는 것입니다.
항아리 패키지로 만듭니다
Maven을 사용하여 프로젝트를 관리하는 경우 다음 명령을 실행하십시오.
CD 프로젝트 및 디렉토리 (pom.xml과 동일) MVN Clean Package ## 또는 다음 명령 ##을 실행하여 테스트 코드를 제외하고 MVN Clean Package -dmaven.test.skip = true를 제외합니다.
포장이 완료되면 대상 디렉토리에서 JAR 패키지가 생성됩니다. 이름은 일반적으로 프로젝트 이름 + 버전 번호입니다.
JAR 패키지 명령을 시작하십시오
Java -jar Target/Spring-Boot-Scheduler-1.0.0.jar
이러한 방식으로 콘솔이 닫히면 서비스에 액세스 할 수 없습니다. 백그라운드에서 실행하여 다음을 시작합시다.
nohup java -jar target/spring-boot-scheduler-1.0.0.jar &
시작할 때 다른 구성 파일을 읽도록 선택할 수도 있습니다.
java -jar app.jar ---spring.profiles.active = dev
시작시 JVM 매개 변수를 설정할 수도 있습니다
java -xms10m -xmx80m -jar app.jar & gradle
Gradle을 사용하는 경우 다음 명령을 사용하여 패키지
Gradle buildjava -jar build/libs/myModule-0.0.1-snapshot.jar
전쟁 가방으로 만드십시오
첫 번째 유형은 개발 도구 이클립스를 통해 전쟁 패키지를 내보내는 데 사용될 수 있으며 다른 유형은 명령을 사용하여 완료하는 것입니다. 여기서 우리는 주로 후자를 소개합니다.
1. Maven Project, POM 패키지를 수정하십시오
할 것이다
<패키징> JAR </포장>
변경
<패키징> 전쟁 </포장>
2. 포장시 Tomcat을 제외하십시오.
<pectionency> <groupid> org.springframework.boot </groupid> <artifactid> 스프링-부트-스타터-web </artifactid> </fectionency> <prectionement> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-tomcate </artifactid>
Tomcat 또는 Jetty와 같은 서버가 런타임에 관련 API 클래스를 제공하기 때문에 JAR 패키지가 최종 전쟁에 포함되지 않도록 제공되는 스코프 속성을 제공합니다.
3. 시작 클래스를 등록하십시오
servletinitializer.java를 만들고 springbootservletinitializer를 상속하고 configure ()를 재정의하고 시작 클래스 응용 프로그램을 등록하십시오. 외부 웹 응용 프로그램 서버가 웹 응용 프로그램 컨텍스트를 구축하면 시작 클래스가 추가됩니다.
공개 클래스 Servletinitializer 확장 SpringBootservletinitializer {@override Protected SpringApplicationBuilder 구성 (SpringApplicationBuilder Application) {return application.Sources (application.class); }}최종 실행
MVN 클린 패키지 -dmaven.test.skip = true
Project Name + Version Number.war 파일은 대상 디렉토리에서 생성되어 Tomcat 서버로 복사하여 시작합니다.
Gradle
Gradle을 사용하는 경우 기본 단계는 동일합니다. Build.Gradle에 전쟁 지원을 추가하고 스프링 부트 스타터-톰카를 제외하십시오.
... 플러그인 적용 : '전쟁'... 종속성 {compile ( "org.springframework.boot : spring-boot-starter-web : 1.4.2 release") {myModule 제외 : "스프링 부트 스타터-톰카"} ...빌드 명령을 다시 사용하십시오
Gradle 빌드
Build/Libs 디렉토리에서 전쟁이 생성됩니다.
생산 운영 및 유지 보수
JVM 매개 변수의 값을보십시오
Java와 함께 제공되는 Jinfo 명령을 따를 수 있습니다.
jinfo -flags pid
항아리가 시작된 후 GC가 사용되는 GC, 새로운 세대와 노인의 메모리의 양을 봅시다. 예제는 다음과 같습니다.
-xx : cicompilercount = 3 -xx : 초기 상해 크기 = 234881024 -xx : maxHeapsize = 3743416320 -xx : maxnewsize = 1247805440 -xx : minhaepdeltabytes = 524288 -xx : newsize = 7811812 : xxx -XX :+USecompressedClassPointers -xx :+USecompressedoops -xx :+usefastUnorderDimeStamps -xx :+useparallelgc -xx : cicompilercount : cicompilercount : xx : xx : xx : 초기 상상 및 -xx : maxHepsize : maxnew jvm -x -x -x -x -xx의 초기 및 최대 hep 크기를 지정합니다. JVM 힙 영역에서 차세대 메모리에 대한 할당 가능한 크기 ... -xx :+useparallelgc : Garbage Collection Parallel Collector를 사용합니다.
다시 시작하는 방법
단순하고 조잡합니다
프로세스를 직접 죽이고 Jar 패키지를 다시 시작하십시오.
ps -ef | grep java ## Java 프로그램 용 Pidkill 받기 -9 PID ## 다시 Java 다시 시작 -Jar xxxx.jar
물론이 방법은 전통적이고 폭력적이므로 다음 방법을 사용하여 관리하는 것이 좋습니다.
스크립트 실행
Maven을 사용하는 경우 다음 구성을 포함해야합니다.
<플러그인> <groupid> org.springframework.boot </groupid> <artifactid> Spring-Boot-Maven-Plugin </artifactid> <configuration> <executable> true </executable> </configuration> </plugin>
Gradle을 사용하는 경우 다음 구성을 포함해야합니다.
SpringBoot {execute = true}시작 방법 :
1. ./yourapp.jar에서 직접 시작할 수 있습니다
2. 서비스로 등록하십시오
또한 JAR 패키지를 가리키고 Init.d에 추가 한 다음 명령으로 시작할 수 있습니다.
init.d 예 :
ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapchmod +x /etc/init.d/yourapp
이렇게하면 정지 또는 다시 시작 명령을 사용하여 응용 프로그램을 관리 할 수 있습니다.
/etc/init.d/yourapp start | stop | 다시 시작
또는
서비스 시작 서비스를 서비스하십시오 | 중지 | 다시 시작하십시오
이 시점에서 SpringBoot 프로젝트의 테스트, 공동 조정 및 포장이 소개되었습니다. SpringBoot의 자동화 된 작동 및 유지 관리 및 SpringBoot 및 Docker의 조합을 연구 할 시간을 찾을 수 있습니다.
샘플 코드 -github
샘플 코드 코드 클라우드
요약
위의 것은 Spring Boot Test 포장 및 배포 방법이 편집자가 소개합니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!