实现1:ClassPathXmlApplicationContext
1、内部维护了 DefaultListableBeanFactory
2、通过XmlBeanDefinitionReader 读取配置文件将结果加入到 DefaultListableBeanFactory
3、没有维护 bean后置处理器 ,可以通过在xml配置 <context:annotation-config/> 来添加bean的后置处理器
实现2:AnnotationConfigApplicationContext
1、给bean工厂维护了bean后置处理器
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
实现3:AnnotationConfigServletWebApplicationContext(重要)
1、这个是在web的时候使用
2、先要有tomcat 的 bean
3、再有dispatcherServlet 的 bean
4、tomcat 的 bean 和 dispatcherServlet 的 bean 做绑定
5、指定 controller 的bean 并指定路径 /hello
实现4:GenericWebApplicationContext
GenericWebApplicationContext 是一个干净的容器 。
// 构建对象
GenericWebApplicationContext context = new GenericWebApplicationContext();
// 给容器注册bean
context.registerBean("apple",Appale.class);
//初始化容器
context.refresh();
// 取bean 这个地方取不到实例 是个空 牛逼了吧。
// GenericWebApplicationContext 是一个干净的容器
Object apple = context.getBean("apple");
// 销毁
context.close();
加入不同的bean后置处理器,则有不同的功能增加