第一   Spring容器的两个核心接口:BeanFactory和ApplicationContext两个常用接口,其中ApplicationContext是BeanFactory的子接口。

      知道了这些最基本的,那么如果Spring容器如果要访问磁盘、类路径以及网络上的资源。怎么做呢?Resource接口

 

       对于一个独立的应用程序,如何实例化BeanFactory了:

//  类加载下的beans.xml文件,独立的程序需要
  Resource res=new  ClassPathResource("beans.xml");

//创建默认的BeanFactory容器
 DefaultListableBeanFactory beanFactory=new DefaultListableBeanFactory();

//让默认的BeanFactory容器加载res对应的XML配置文件
 new  XmlBeanDefinitionReader(beanFactory).loadBeanDefinitions(res);

逻辑是实例化BeanFactory
首先需要将beans.xml的配置文件加载起来,需要Resource接口来实现,然后需要将BeanFactory接口的DefaultListableBeanFactory实现类建立,最后容器中装载全部的beans.xml配置文件 

  

如果需要加载多个配置文件的化,通常推荐ApplicationContext

ApplicationContext atx=new ClassPathXmlApplicationContext("beans.xml","service.xml")

  

 

ApplicationContext是BeanFactory的子类,相比应用场景较多,除非对内存控制非常严格,一般不使用BeanFactory。

相比BeanFactory,ApplicationContext具有更多有点:

1 国际化(我的理解就是本地化,支持更多的语言)

2 能够加载多个bean.xml

3 事件机制

4 资源访问

   第二  Bean获取Spring容器

 

  第一种思路:创建Spring容器,再调用Spring容器的getBean()方法来获取Spring容器中的Bean。 

 第二种思路:Web应用中,Spring容器采用声明方式配置生产:开发者需要在web.xml文件中配置一个Listener,该Listener负责出事化Spring容器,前段框架MVC直接调用Spring容器中的Bean,无须访问Spring容器本身。

  

  第三 Spring容器中的Bean

Spring开发者要做两件事情:1 开发Bean 2 配置Bean

1 Bean的基本定义和Bean别名

 <beans.../>是Spring配置文件的根元素,<bean.../>是<beans.../>的子元素。

每个<bean.../>定义一个Bean,而每个Bean对应Spring容器里面的Java实例。

 

定义Bean是,通常需要指定两个属性

id:确定该Bean的唯一标识   class:指该Bean的具体实现类,不能是接口。

 

对Bean指定名字,通常有两种方法一种是直接在<bean id="Person" class=" "  name="#abc,@!123"/>

这是一种方式,还有一种方式是通过<alias >

<alias name="Person"  alias="jack">

 

2 容器中Bean的作用域

     singleton:单例模式,在整个SpringIoc容器中,singleton作用域的Bean将值生成一个Bean

    prototype:每次通过容器的getBean()方法获取prototype作用域的Bean时,都尝试新的Bean。