BeanFactory与ApplicationContext关系的分析
BeanFactory是Spring中最基本的接口,它是Spring IoC容器中最底层的接口,提供了IoC容器最基本的形式,它具有最基本的 IoC 功能,负责管理 Spring Bean 的生命周期,通过 BeanFactory 可以获取指定 Bean 的实例。 ApplicationContext是BeanFactory的子接口,ApplicationContext继承了BeanFactory接口的全部功能,同时还提供了其他的一些功能。ApplicationContext是Spring中最重要的接口之一,它是Spring容器的具体实现,在BeanFactory的基础上添加了一些更加实用的功能,比如资源加载、事件发布、AOP和事务等。 因此,可以认为ApplicationContext继承了BeanFactory,拥有了更多的功能和扩展性。
ApplicationContext继承的接口与功能
- ResourceLoader:加载资源文件
- MessageSource:国际化消息的源头
- ApplicationEventPublisher:应用事件发布
- EnvironmentCapable:获取当前应用的环境信息
- ListableBeanFactory:提供了批量操作Bean的方法
- HierarchicalBeanFactory:层次性的BeanFactory,支持子容器
- AutowireCapableBeanFactory:Bean自动装配的BeanFactory
- BeanDefinitionRegistry:定义和注册BeanDefinition的接口
- ConfigurableApplicationContext:ApplicationContext可配置的接口,对外提供了修改bean定义、激活环境、注册shut-down hook等能力。
BeanFactory应用代码示例
public class TestBean {
private String name;
public TestBean() {
System.out.println("constructor of TestBean is invoked");
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class BeanFactoryExample {
public static void main(String[] args) {
Resource resource = new Cl