在我的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功能?如果没有,那么替代解决方案是什么?
答案 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})