SpringBoot获取ApplicationContext
SpringBoot获取ApplicationContext
·
SpringBoot获取ApplicationContext
前言
ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等。ApplicationContext接口定义如下:
public interface ApplicationContext extends
EnvironmentCapable,
ListableBeanFactory,
HierarchicalBeanFactory,
MessageSource,
ApplicationEventPublisher,
ResourcePatternResolver{}
- EnvironmentCapable:获取运行时环境
- ListableBeanFactory:获取beanNames的功能
- HierarchicalBeanFactory:获BeanFactory的功能
- MessageSource:集成消息解析器
- ApplicationEventPublisher:事件监听
- ResourcePatternResolver:资源解析器
一、@Autowired(@Resouce)注入
@Component
public class ApplicationContextProvider1 {
@Autowired
private ApplicationContext applicationContext;
@Bean("user01")
public User user(){
return new User("zhangsan",18);
}
@Bean("printApplicationContext01")
public void printApplicationContext(){
System.out.println(applicationContext.getBean("user01"));
}
}
二、实现ApplicationContextAware接口(推荐)
@Component
public class ApplicationContextProvider2 implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
@Bean("user02")
public User user(){
return new User("lisi",19);
}
@Bean("printApplicationContext02")
public void printApplicationContext(){
System.out.println(applicationContext.getBean("user02"));
}
}
三、构造器方法注入
利用Spring4.3特性
- 构造函数只能有一个,如果有多个,就必须有一个无参数的构造函数,此时,Spring会调用无参数的构造函数
- 构造函数的参数,必须在Spring容器中存在
@Component
public class ApplicationContextProvider3 {
private ApplicationContext applicationContext;
public ApplicationContextProvider3(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Bean("user03")
public User user(){
return new User("wangwu",20);
}
@Bean("printApplicationContext03")
public void printApplicationContext(){
System.out.println(applicationContext.getBean("user03"));
}
}
更多推荐
已为社区贡献5条内容
所有评论(0)