如何注入ApplicationContext本身

时间:2011-02-06 14:55:02

标签: java spring applicationcontext

我想将一个ApplicationContext本身注入一个bean。

这样的东西
public void setApplicationContext(ApplicationContect context) {
  this.context = context;
}

春天有可能吗?

4 个答案:

答案 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);
    }
}