在 Spring 引导应用程序中禁用 Spring JMS 自动配置

Disabling Spring JMS Auto configuration in Spring Boot Application

在我的 spring 启动应用程序中,我配置了两个不同的 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 引导的 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})