[SPRING] 스프링 부트는 프로필이있는 임베디드 톰캣을 활성화 / 비활성화합니다.
SPRING스프링 부트는 프로필이있는 임베디드 톰캣을 활성화 / 비활성화합니다.
application.properties 파일에 어떤 @Profile이 설정되어 있는지에 따라 여러 @Configuration 클래스 중 하나를 사용하는 Spring Boot 응용 프로그램을 작성하고 있습니다.
이러한 구성 클래스 중 하나는 REST 인터페이스를 사용하므로 spring-boot-starter-web을 종속성으로 포함합니다.
이것은 임베디드 Tomcat 인스턴스를 시작합니다.
문제는 다른 프로필에 내장 된 서버가 필요하지 않다는 것입니다 (예 : JMS 대신 REST 대신 들어오는 메시지를 처리하는 경우).
@SpringBootApplication이 Tomcat을 기본적으로 시작하지 못하게하고 REST Configuration 클래스에서만 사용하는 것을 막을 수있는 방법이 있습니까? 예 : 해당 클래스에 @EnableWebMVC를 사용하여 주석을 추가합니다.
다음은 @Configuration 클래스의 예입니다.
휴식:
@Profile({"REST"})
@Configuration
@EnableWebMvc
public class HttpConfiguration{
.
.
.
}
JMS :
@Profile({"JMS"})
@Configuration
@EnableJms
public class JMSConfiguration{
.
.
.
}
감사
해결법
-
==============================
1.용도
용도
@SpringBootApplication(exclude = {EmbeddedServletContainerAutoConfiguration.class, WebMvcAutoConfiguration.class})
임베디드 서블릿 컨테이너에 대한 스프링 부트의 자동 구성을 제외합니다. 또한 REST가 아닌 경우 다음 속성을 설정하여 Spring Boot가 WebApplicationContext (서블릿 컨테이너가 필요함)를 시작하지 않도록해야합니다.
spring.main.web-environment=false
EmbeddedServletContainerAutoConfiguration.class를 가져 와서 REST 프로파일에 임베디드 Tomcat을 활성화하십시오 (REST 프로파일이로드 될 때까지 자동 구성이 지연됩니다.
@Profile({"REST"}) @Configuration @Import(EmbeddedServletContainerAutoConfiguration.class) public class HttpConfiguration { // ... }
EmbeddedServletContainerCustomizers를 사용하는 경우 EmbeddedServletContainerCustomizerBeanPostProcessorRegistrar.class도 가져와야합니다.
-
==============================
2.@hzpz와 @orid의 답은 올바른 길로 나를 설정했습니다.
@hzpz와 @orid의 답은 올바른 길로 나를 설정했습니다.
추가해야했습니다.
@SpringBootApplication(exclude = {EmbeddedServletContainerAutoConfiguration.class, WebMvcAutoConfiguration.class})
설정 :
spring.main.web-environment=false
non-Rest 경우에 대한 내 application.properties 파일에서.
-
==============================
3.Spring Boot 2.0에서만 spring.main.web-application-type = none은 해당 프로필에서 트릭을 수행합니다.
Spring Boot 2.0에서만 spring.main.web-application-type = none은 해당 프로필에서 트릭을 수행합니다.
Spring 부트 2.0에서 다중 문서 application.yml을 사용하는 경우이 블록을 추가하고 웹 서버가 내장되어서는 안되는 프로필로 no-web-profile-name을 바꾸면됩니다 :
--- spring: profiles: no-web-profile-name main: web-application-type: none
from https://stackoverflow.com/questions/32078015/spring-boot-enable-disable-embedded-tomcat-with-profile by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 기존의 Tomcat 웹 응용 프로그램에서 SSO를 구현하는 방법 (0) | 2019.02.04 |
---|---|
[SPRING] 봄 컨트롤러의 정규식 (0) | 2019.02.04 |
[SPRING] @Valid에 대한 유효성 검사 그룹을 지정하는 방법? (0) | 2019.02.04 |
[SPRING] 봄 보안 사용자 정의 로그 아웃 처리기 (0) | 2019.02.04 |
[SPRING] 봄 MVC 파일 업로드 도움말 (0) | 2019.02.04 |