我们知道,@Autowired
只能在spring容器管理的实例中使用,如果你是新实例,并且其中的@Autowired
成员不会生效。
但我认为在某些情况下,新的实例无法避免。
如RunnableTask。其中包含由spring管理的DAOService。因为该任务是手动新的。所以我不能在ThreadTask中使用DAOService。
所以我想知道如何在 Spring Boot 中获取ApplicationContext,因此我可以通过context.getBean()
获取bean。
我在main()中知道我可以自动连接ApplicationContext。但我无法将上下文作为参数传递到任何地方!
我想在任何地方获取ApplicationContext。
非常感谢任何帮助。
答案 0 :(得分:4)
如何使用spring管理的工厂对象?
class TheBeanYouWant {
private Integer beanSupposeToAutowired;
public TheBeanYouWant(Integer bean) {
this.beanSupposeToAutowired = bean;
}
}
@Component
class TheBeanFactory {
@Autowired
private Integer beanAutowired;
public TheBeanYouWant newBean() {
return new TheBeanYouWant(beanAutowired);
}
}
答案 1 :(得分:2)
我想在任何地方获取ApplicationContext。
这是一种反模式。尽量避免它。
为什么不能将DAOService
注入创建RunnableTask
的内容?