簡體   English   中英

在 Spring Boot 應用程序中禁用 Spring JMS 自動配置

[英]Disabling Spring JMS Auto configuration in Spring Boot Application

在我的 Spring Boot 應用程序中,我配置了兩個不同的 MQQueueConnectionFactory 實例(不同的 id),因為它是應用程序的需要。 為此,我添加了 ibm 客戶端 jar。

我還在我的代碼中添加了 spring-jms 依賴項,因為我想要 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;

我是否可以隨時關閉 Spring Boot 的 JmsAutoconfiguration 功能? 如果不是,那么對此的替代解決方案是什么?

您可以將要禁用的自動配置添加到 SpringBootApplication 注釋中:

@SpringBootApplication(exclude = JmsAutoConfiguration.class)

如果想通過屬性(在這種情況下是 application.yml)控制它,那么你可以做這樣的事情。

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

僅供參考,使用它來禁用ActiveMQ

@SpringBootApplication(exclude = ActiveMQAutoConfiguration.class)

在我的情況下,它在排除兩個類后工作:

 @EnableAutoConfiguration(exclude={JmsAutoConfiguration.class, ActiveMQAutoConfiguration.class})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM