我想将一个ApplicationContext
本身注入一个bean。
像
这样的东西public void setApplicationContext(ApplicationContect context) {
this.context = context;
}
春天有可能吗?
答案 0 :(得分:113)
之前的评论还可以,但我通常更喜欢:
@Autowired private ApplicationContext applicationContext;
答案 1 :(得分:38)
使用ApplicationContextAware
界面轻松实现。
public class A implements ApplicationContextAware {
private ApplicationContext context;
public void setApplicationContext(ApplicationContext context) {
this.context = context;
}
}
然后在您的实际applicationContext中,您只需要引用您的bean。
<bean id="a" class="com.company.A" />
答案 2 :(得分:12)
是的,只需实施ApplicationContextAware - 接口。
答案 3 :(得分:0)
部分解决方案 - 从任何(非 Spring)类中获取 Spring bean:
@Component
public class SpringContext {
private static ApplicationContext applicationContext;
@Autowired
private void setApplicationContext(ApplicationContext ctx) {
applicationContext = ctx;
}
public static <T> T getBean(Class<T> componentClass) {
return applicationContext.getBean(componentClass);
}
}