Spring Boot 배치 과정 분석(jar 또는 war)

머리말
전통 적 인 ssm 나 ssh 프로젝트 의 배 치 는 일반적으로 war 패키지 로 포장 되 거나 컴 파일 된 폴 더 로 tomcat 의 webapps 디 렉 터 리 에 넣 습 니 다.war 패키지 라면 자동 으로 압축 이 풀 립 니 다.Spring Boot 는 기본적으로 Tomcat 이 내장 되 어 있 기 때문에 웹 프로젝트 라 도 jar 패키지 로 직접 포장 하여 자바-jar 로 실행 하면 됩 니 다.
Spring Initialzr 로 만 든 웹 프로젝트(jar 로 포장 선택)는 spring-boot-starter-web 의존 만 있 습 니 다.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
따라 들 어가 보 니 이 의존 은 spring-boot-starter-tomcat 라 는 것 을 포함 하고 있 습 니 다.내부 tomcat 배 치 를 사용 하면 코드 를 수정 할 필요 가 없 으 며,직접 run xx Application 에서 의 Main 방법 입 니 다.
war 의 웹 프로젝트 를 만 들 었 다 면 기본적으로 ServletInitializer 파일 이 하나 더 있 을 것 입 니 다.maven 은 spring-boot-starter-tomcat 에 의존 할 것 입 니 다.war 프로젝트 는 Main 방법 으로 시작 할 수도 있 고 외부 tomcat 로 시작 할 수도 있 습 니 다.
이렇게 보면 아무런 문제 가 없습니다.만약 에 이전에 건설 공사 에 jar 를 사 용 했 으 면 최종 적 으로 외부 tomcat 로 배치 해 야 합 니 다.다음 과 같은 수정 만 하면 됩 니 다.

// 1.      ServletInitializer.java
// 2. Maven    <packaging>war</packaging>。(    jar)
// 3.    spring-boot-starter-tomcat   。(   ,      ,     Spring Initialzr        ,      )
만약 당신 이 JSP 를 사용한다 면 아마도 약간의 문제 가 있 을 것 입 니 다.
일반적으로 블 로 그 는 JSP 가 필요 하 다 면 tomcat-embed-jasper 에 의존 하 는 것 을 추가 해 야 합 니 다.

<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
  <scope>provided</scope>
</dependency>
특히 주의해 야 할 것 은:
spring-boot-starter-web 에 tomcat 가 내장 되 어 있 지만,내 장 된 spring-boot-starter-tomcat 는 tomcat-embed-core 만 포함 되 어 있 으 며,tomcat-embed-jasper 는 포함 되 어 있 지 않 습 니 다.따라서 이 의존 도 를 따로 추가 해 야 한다.
외부 tomcat 배 치 를 사용 하고 JSP 를 사용 한 경우 다음 설정 이 필요 합 니 다.

<!--   web      tomcat   。(      tomcat   ) -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </exclusion>
  </exclusions>
</dependency>

<!--    tomcat-embed-jasper  scope。(                 ,         tomcat    ,        ) -->
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
  <scope>provided</scope>
</dependency>
총결산
  • 기본적으로 현재 jar 패키지 로 직접 배치 합 니 다.
  • war 가방 을 배치 해 야 한다 면 가장 쉬 운 방법 은 pom 에 war 를 추가 하고 ServletInitializer 파일 을 추가 하 는 것 입 니 다(필수).4567918)
  • JSP 가 필요 하 다 면 tomcat-embed-jasper 와 기타 필요 한 의존 도 를 추가 합 니 다.
  • 상기 글 이나 다른 블 로그 에서 언급 한 것 은 웹 가방 에서 tomcat 를 제외 하거나 jasper 의 scope 는 provided 여야 합 니 다.사실은 테스트 를 통 해 고 쳤 거나 안 고 쳤 거나 똑 같 습 니 다.(충돌 이 일어나 지 않 았 다 면 중요 하지 않다.오류 가 발생 했 습 니 다.여기 두 곳 만 주의 하 시 면 됩 니 다.
  • 참고 문헌
    springboot embedded tomcat and tomcat-embed-jasper
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기