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

时间:2015-10-22 07:01:22

标签: spring spring-boot spring-jms

在我的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;

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

4 个答案:

答案 0 :(得分:19)

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

@SpringBootApplication(exclude = JmsAutoConfiguration.class)

答案 1 :(得分:8)

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

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

答案 2 :(得分:5)

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

@SpringBootApplication(exclude = ActiveMQAutoConfiguration.class)

答案 3 :(得分:1)

就我而言,它在排除两个类之后都有效:

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