Spring(06)——单例注入多例之ApplicationContext
6 单例注入多例之注入ApplicationContext
Spring bean容器中的bean有单例bean,也有多例bean。当我们需要给一个单例beanA注入一个单例beanB,或者给一个多例beanA注入一个多例或单例beanB时,都可以通过配置让Spring的bean容器帮我们完成。但如果我们需要给一个单例beanA注入一个多例beanB时,仅仅通过配置Spring是无法帮我们的单例beanA注入一个多例beanB的,即无法让我们每次使用beanB时都使用的是一个全新的beanB。因为beanA只初始化一次,相对应的Spring只会给beanA注入一个beanB。解决办法是给beanA注入一个ApplicationContext,这样我们就可以在每次需要使用beanB时都从ApplicationContext中获取一个新的beanB。
注入ApplicationContext有两种方式,实现ApplicationContextAware接口和通过@Autowired或@Resource注解标注让Spring进行自动注入。
6.1 实现ApplicationContextAware接口
ApplicationContextAware接口中定义了一个setApplicationContext()方法,对于实现了该接口的bean,Spring将通过调度对应的setApplicationContext()方法将当前ApplicationContext传递过去。
public class Hello implements ApplicationContextAware {
private ApplicationContext applicationContext;
/**
* Spring将通过该方法给我们的bean注入当前的ApplicationContext
*/
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
}
6.2 通过注解标注
我们知道在使用注解进行配置时,我们也可以通过注解来告诉Spring要为当前的bean注入哪些内容。对于ApplicationContext也是一样的,我们可以通过对应的注解来告诉Spring将为我们注入对应的ApplicationContext。自动注入的注解可以是@Resource,也可以是@Autowired。
public class Hello {
private ApplicationContext applicationContext;
@Resource
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
}
(注:本文是基于Spring4.1.0所写)
- 本文标签: Spring 抓包 Java
- 本文链接: http://www.it586.cn/article/262
- 版权声明: 本文由miger原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权