首页 > 解决方案 > 应用程序请求为空后使用 Autowired 获取实例

问题描述

我需要获取使用 Spring Boot Application 启动生成的 ConnectionFactory 实例,

@Configuration
public class Config {

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory("localhost");
        return connectionFactory;
     }

}

public class Consumer {

    @Autowired Config config;

    public void request(Queue queue) {
        ConnectionFactory cf=config.connectionFactory();
    }
}

即使该值是自动连接的,我也将配置对象设为 null 并且在加载 SpringBoot 应用程序后有什么方法可以获取连接工厂实例。

是否可以在不使用静态和当前的情况下获取实例?我将实例设置为静态对象并检索它,但我需要使用没有静态方法的现有连接工厂实例。

请建议如何实施?

标签: javaspringspring-bootautowired

解决方案


向Spring bean 工厂@Bean注册一个ConnectionFactory实例。所以你应该@Autowire那样做。并且Consumer应该标记为@Component或等效,以便 Spring 可以管理填充@Autowiredbean。

@Component
public class Consumer {

   @Autowired ConnectionFactory cf;

     public void request(Queue queue) {
        // use the connection factory here
     }
}

推荐阅读