java - Spring引导自动配置AutoConfigureAfter

标签 java spring spring-boot jms jndi

我正在尝试创建一个后备 ConnectionFactory,以防 JndiConnectionFactoryAutoConfiguration 没有为我创建一个。

这是该类的样子

@Configuration
@AutoConfigureAfter(JndiConnectionFactoryAutoConfiguration.class)
@ConditionalOnMissingBean(ConnectionFactory.class)
@ConditionalOnClass(ConnectionFactory.class)
public class JmsFallbackAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    ConnectionFactory fallbackConfiguration() {
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        System.out.println("Created: " + activeMQConnectionFactory);
        return activeMQConnectionFactory;
    }

}

我期待的是 spring boot 启动,一些自动配置正在进行,我们到达 JndiConnectionFactoryAutoConfiguration,它注意到我设置了 spring.jms.jndi-name 并创建了 ConnectionFactory bean。

然后,在某个时刻,我期望它到达 JmsFallbackAutoConfiguration,此时它应该注意到我们已经有一个 ConnectionFactory(由 JndiConnectionFactoryAutoConfiguration 配置)并继续。

但事实并非如此,JmsFallbackAutoConfiguration 始终执行,我不知道我错过了什么。

这里是示例项目https://github.com/apixandru/case-study/tree/master/spring-boot-weblogic-jms/spring-boot-weblogic-jms-war

最佳答案

JmsFallbackAutoConfiguration 与使用 @SpringBootApplication 注释的主应用程序类位于同一包中。这意味着它将通过组件扫描找到。您需要将其移至单独的包中,以便它与主应用程序类或其子包之一不在同一包中。

关于java - Spring引导自动配置AutoConfigureAfter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435641/

相关文章:

java - 如何使用 Phonegap 自动旋转捕获的图像?

java - 使用动态名称创建变量 - Java

java - 无法选择多个 gridview 项目

java - Spring boot AuthenticationSuccessHandler 被忽略

java - Hibernate + Spring + Maven(框架设置问题)

java - 状态 404 - MockMvc 授权 - Spring boot REST 文档

java - 执行器/指标端点不包括http.server.requests

java - 如何确保使用java.net传递的文件与传输前一样

java - 如何使我的 sql 数据可用于 Junit 中的所有新事务?

java - Spring Boot 和 Gradle 多模块项目,未能正确加载依赖项