복붙노트

[SPRING] 스프링 부트 애플리케이션에서 스프링 JMS 자동 설정 비활성화하기

SPRING

스프링 부트 애플리케이션에서 스프링 JMS 자동 설정 비활성화하기

내 봄 부팅 응용 프로그램에서 그것은 응용 프로그램의 필요로 MQQueueConnectionFactory (다른 ID)의 두 가지 인스턴스를 구성합니다. 이를 위해 iibm client jars를 추가했습니다.

JmsTemplate 등의 클래스를 원했기 때문에 스프링 코드 종속성을 코드에 추가했습니다. 이 종속성을 추가 한 후 JmsAutoConfiguration은 클래스 경로에서 JmsTemplate을 찾아 bean을 구성하려고 시도합니다. 이 프로세스에서는 ConnectionFactory 유형의 bean을 삽입하려고 시도하는데, 여기에서는 코드가 실패하고 오류가 발생하기 시작합니다. 아래는 JmsAutoConfiguration의 코드입니다.

@Configuration
@ConditionalOnClass(JmsTemplate.class)
@ConditionalOnBean(ConnectionFactory.class)
@EnableConfigurationProperties(JmsProperties.class)
@Import(JmsAnnotationDrivenConfiguration.class)
public class JmsAutoConfiguration {

    @Autowired
    private JmsProperties properties;

    @Autowired
    private ConnectionFactory connectionFactory;

    @Autowired(required = false)
    private DestinationResolver destinationResolver;

혹시 봄 부팅의 JmsAutoconfiguration 기능을 끌 수있는 기능이 있습니까? 그렇지 않다면 이것에 대한 대체 솔루션은 무엇입니까?

해결법

  1. ==============================

    1.비활성화하려는 자동 구성을 SpringBootApplication 주석에 추가 할 수 있습니다.

    비활성화하려는 자동 구성을 SpringBootApplication 주석에 추가 할 수 있습니다.

    @SpringBootApplication(exclude = JmsAutoConfiguration.class)
    
  2. ==============================

    2.속성 (이 경우 application.yml)을 통해 제어하려는 경우 다음과 같이 할 수 있습니다.

    속성 (이 경우 application.yml)을 통해 제어하려는 경우 다음과 같이 할 수 있습니다.

    spring:
      autoconfigure:
        exclude: org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration
    
  3. ==============================

    3.참고로, 이것을 사용하여 ActiveMQ를 비활성화하십시오.

    참고로, 이것을 사용하여 ActiveMQ를 비활성화하십시오.

    @SpringBootApplication(exclude = ActiveMQAutoConfiguration.class)
    
  4. from https://stackoverflow.com/questions/33275088/disabling-spring-jms-auto-configuration-in-spring-boot-application by cc-by-sa and MIT license