programing

프로파일이 있는 임베디드 Tomcat의 스프링 부트 활성화/비활성화

lovejava 2023. 2. 28. 23:09

프로파일이 있는 임베디드 Tomcat의 스프링 부트 활성화/비활성화

Spring Boot 어플리케이션을 작성하고 있습니다.@Configuration어떤 클래스냐에 따라@Profile로 설정되어 있다.application.properties파일.

이러한 컨피규레이션클래스 중 하나는 REST 인터페이스를 사용하고 있기 때문에 다음과 같이 설명합니다.spring-boot-starter-web의존관계로서.

그러면 내장된 Tomcat 인스턴스가 시작되며 문제 없습니다.

문제는 다른 프로파일에는 임베디드 서버가 필요하지 않다는 것입니다(예를 들어 REST 대신 JMS를 사용하여 수신 메시지를 처리합니다).

이 문제를 막을 방법은 없을까?@SpringBootApplicationREST Configuration 클래스에만 사용할 수 있습니까?예를 들어, 해당 클래스에 주석을 추가하여@EnableWebMVC

여기 저의 예가 있습니다.@Configuration클래스:

기타:

@Profile({"REST"})
@Configuration
@EnableWebMvc
public class HttpConfiguration{
 .
 .
 .
}

JMS:

@Profile({"JMS"})
@Configuration
@EnableJms
public class JMSConfiguration{
 .
 .
 .
}

감사해요.

사용하다

@SpringBootApplication(exclude = {EmbeddedServletContainerAutoConfiguration.class, 
                                  WebMvcAutoConfiguration.class})

임베디드 서블릿 컨테이너에 대한 스프링 부트의 자동 구성을 제외합니다.또한 비 REST 케이스에 대해 다음 속성을 설정해야 Spring Boot이 다음 명령을 시작할 수 있습니다.WebApplicationContext(서블릿 컨테이너가 필요):

spring.main.web-environment=false

그런 다음 REST 프로파일에 내장된 Tomcat을 활성화하려면EmbeddedServletContainerAutoConfiguration.class(REST 프로파일이 로드될 때까지 자동 설정이 지연됩니다).

@Profile({"REST"})
@Configuration
@Import(EmbeddedServletContainerAutoConfiguration.class)
public class HttpConfiguration {
    // ...
}

사용하고 있는 경우EmbeddedServletContainerCustomizers, Import도 필요합니다.EmbeddedServletContainerCustomizerBeanPostProcessorRegistrar.class.

Spring Boot 2.0의 경우spring.main.web-application-type=none적절한 프로파일에서 트릭을 실행합니다.

다중 문서를 사용하는 경우application.ymlSpring Boot 2.0을 사용하여 이 블록을 추가하고 치환합니다.no-web-profile-name내장형 웹 서버가 동작하지 않는 프로파일로 설정합니다.

---
spring:
  profiles: no-web-profile-name
  main:
    web-application-type: none

@hzpz와 @orid의 답변은 저를 올바른 방향으로 이끌었습니다.

추가할 필요가 있었습니다.

@SpringBootApplication(exclude = {EmbeddedServletContainerAutoConfiguration.class, 
WebMvcAutoConfiguration.class})

및 설정:

spring.main.web-environment=false

내 안에서application.properties휴식이 아닌 케이스에 대해 제출합니다.

언급URL : https://stackoverflow.com/questions/32078015/spring-boot-enable-disable-embedded-tomcat-with-profile