java - 应用程序请求为空后使用 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 应用程序后有什么方法可以获取连接工厂实例。
是否可以在不使用静态和当前的情况下获取实例?我将实例设置为静态对象并检索它,但我需要使用没有静态方法的现有连接工厂实例。
请建议如何实施?
解决方案
向Spring bean 工厂@Bean
注册一个ConnectionFactory
实例。所以你应该@Autowire
那样做。并且Consumer
应该标记为@Component
或等效,以便 Spring 可以管理填充@Autowired
bean。
@Component
public class Consumer {
@Autowired ConnectionFactory cf;
public void request(Queue queue) {
// use the connection factory here
}
}
推荐阅读
- python - 如何在 Python Tensorflow-Keras 中腌制弱引用?
- java - ASM ClassReader 无法解析类文件 [class java.lang.Object],可能是由于尚不支持新的 Java 类文件版本
- javascript - json 文件到图表
- mysql - 如何在 heroku 上部署我的 mysql 数据库而不是使用它的 clearDB?
- python - 图像处理的二进制阈值
- python - 在二维 numpy 数组中随机选择一个零
- python - Python - 电子邮件中的多个嵌入图像 - 第一个是嵌入的,其余的是附加的,为什么?
- python - Python ffmpeg 子进程永远不会在 Linux 上退出,适用于 Windows
- amazon-web-services - 我们可以为域和子域使用不同的 NS
- google-cloud-platform - 如何使用 Apache Beam 最新转换从 pcoll 获取最新时间戳?