在 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})
在我的 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})