在Spring Boot Application中禁用Spring JMS Auto配置

use*_*483 14 spring spring-jms spring-boot

在我的spring启动应用程序中,我配置了两个不同的MQQueueConnectionFactory实例(不同的id),因为它是应用程序的需要.为此,我添加了ibm客户端罐子.

我还在我的代码中添加了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;
Run Code Online (Sandbox Code Playgroud)

我是否有机会随时关闭弹簧靴的JmsAutoconfiguration功能?如果没有,那么替代解决方案是什么?

dun*_*nni 21

您可以将要禁用的自动配置添加到SpringBootApplication批注:

@SpringBootApplication(exclude = JmsAutoConfiguration.class)
Run Code Online (Sandbox Code Playgroud)

  • 或:`@EnableAutoConfiguration(exclude = JmsAutoConfiguration.class)` (2认同)

Sam*_*til 10

如果想通过属性(在这种情况下是application.yml)控制它,那么你可以做这样的事情.

spring:
  autoconfigure:
    exclude: org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration
Run Code Online (Sandbox Code Playgroud)


raf*_*ian 7

仅供参考,使用此功能可禁用ActiveMQ

@SpringBootApplication(exclude = ActiveMQAutoConfiguration.class)
Run Code Online (Sandbox Code Playgroud)


Sag*_*oon 6

就我而言,它在排除这两个类后起作用:

 @EnableAutoConfiguration(exclude={JmsAutoConfiguration.class, ActiveMQAutoConfiguration.class})
Run Code Online (Sandbox Code Playgroud)