spring的IOC容器ApplicationContext和BeanFactory

花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述spring的IOC容器ApplicationContext和BeanFactory相关的知识,希望能为你提供帮助。
beanfactory是ioc的基础容器,它主要的实现类XmlBeanFactory  类,这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。注意和FactoryBean的区别
这里要自己的要注意的问题:
        1)假如自己来实现,怎么把对象进行注入,什么时候注入,怎么解决循环依赖的问题
        2)注入是用的是BeanDefination,那么是怎么把class文件跟它联系起来的,主要使用哪些属性
        3)怎么让第三方框架把自己的属性注入进来的,然后如何进行很好的调用
【spring的IOC容器ApplicationContext和BeanFactory】        4) 对于使用者来说,怎么进行来扩展或者使用一些修改的功能  BeanPostProcessor 
        5)  注意这里用了什么好的方式,自己可以借鉴的
ApplicationContext继承了BeanFactory,但是这个可以理解为应用上下文,
          1) 国际化(MessageSource)
          2) 访问资源,如URL和文件(ResourceLoader)
          3) 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层  ,
          4) 消息发送、响应机制(ApplicationEventPublisher)
          5) AOP(拦截器)

  • FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
  • ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
  • WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
  • AnnotationConfigApplicationContext可以实现基于java的配置类加载Spring的应用上下文。避免使用application.xml进行配置。相比XML配置,更加便捷,用到的注解是@Configuration和@Bean
ApplicationContext 包含 BeanFactory 所有的功能,一般情况下,相对于 BeanFactory,ApplicationContext 会更加优秀。当然,BeanFactory 仍可以在轻量级应用中使用,比如移动设备或者基于 applet 的应用程序。

    推荐阅读