Bean管理XML方式

1.core container(核心容器) 所需要的jar包:

   beans,core,context,expression,commons-logging(日志)

2.IOC(概念和原理)

  原理: 利用xml解析、工厂模式、反射

  spring提供IOC容器实现两种方式:(两个接口)

  1.BeanFactory:IOC容器的基本实现,是spring内部使用的接口。

  2.ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能。

    实现类:FileSystemXmlApplicationContext  硬盘中绝对路径

           ClassPathXmlApplicationContext  类路径

  区别:   BeanFactory加载配置文件的时候不会创建对象,在获取对象(使用)的时候才会创建对象。 ApplicationContext 在加载配置文件的时候就会把配置文件中的对象全部创建,存入Map集合中。

3.IOC基本使用

1.基础类型注入

1.set方法注入
<bean id="" class="" >
    <property name="" value="" />
    <property name="" value="" />
</bean>
2.有参构造方法注入
<bean id="" class="" >
    <constructor-arg name="" value=""></constructor-arg>
    <constructor-arg name="" value=""></constructor-arg>
</bean> 
3.设置NULL值
<bean id="" class="" >
    <property name="" >
          <null/>  
    </property>  
</bean>
4.设置特殊字符
     1.可以使用转译字符, 如:&lt&gt
     2.把带特殊符号的写入CDATA内
<bean id="" class="" >
    <property name="" >
          <value><![CDATA[<<南京>>]]></value>  
    </property>  
</bean>

 

id: 唯一标识,为类命名。 存入Map中的键

class:类全路径名

name:属性名

value:属性值

创建对象是默认创建无参构造方法

2.引用类型注入

1.引用外部bean
<bean id="" class="" >
    <property name="" ref="对应bean标签中的id">
</bean>
2.内部bean
<bean id="" class="" >
    <property name="" value="">
    <property name="" value="">
    <property name="">
        <bean id="" class="">
            <property name="" value="" />
        </bean>
    </property>
</bean>
3.级联bean
<bean id="" class="" >
    <property name="" value="" />
    <property name="object" ref="Object" />
    <property name="object.property" value=""/>  
</bean>

3.集合注入

数组
<bean id="" class="">
    <property name="">
        <array>
            <value></value>
            <value>值2</value>
        </array>
    </property>
</bean>

List
<bean id="" class="">
    <property name="">
        <list>
            <value></value>
            <value>值2</value>
        </list>
    </property>
</bean>

Map
<bean id="" class="">
    <property name="">
        <map>
            <entry key="" value=""></entry>
            <entry key="" value=""></entry>
        </map>
    </property>
</bean>

Set
<bean id="" class="">
    <property name="">
        <set>
            <value></value>
            <value>值2</value>
        </set>
    </property>
</bean>

集合注入引用类型

List
<bean id="" class="">
    <property name="">
        <list>
            <ref bean="bean id值"></ref>
        </list>
    </property>
</bean>

 

IOC bean管理

普通bean:在配置文件中定义bean类型就是返回类型

工厂bean:在配置文件中定义bean类型可以和返回的类型不一样

  普通类实现FactoryBean<Student> 实现方法

    public Student getObject() throws Exception{

      return new Student();

    }

  创建返回的就是一个Student对象

 

Bean的作用域

  <bean id="" class="" scope="singleton">   默认单实例

  单实例(singleton):在加载配置文件的时候创建一个实力对象。

  多实例(prototype):不是在加载配置文件的时候创建,而是在调用的时候创建多实例的对象。

 

Bean的生命周期  

  1.执行无参构造方法

  2.调用set方法设置属性值

  3.把bean实例传递给bean后置处理器的方法 postProcessBeforeInitialization

  4.执行初始化方法(需要在bean标签中加入属性 init-method="方法名")

  5.把bean实例传递给bean后置处理器的方法 postProcessAfterInitialization

  6.获取bean实例对象

  7.执行销毁方法(需要在bean标签中计入属性 destroy-method="方法名")

  怎么创建后置处理器?

    1.实现接口 BeanPostProcess

      实现方法:

        1)postProcessBeforeInitialization

        2)postProcessAfterInitialization

    2.添加spring配置文件

      <bean id="" class="后置处理器类全路径"></bean>

    添加了后置处理器之后会把当前配置文件所有类,都加上后置处理

 

 

IOC操作 bean 管理(xml 自动装配)

  实现自动装配

    1. 在bean标签中加入属性autowrite=""

    2.有两个值:

      byName:根据属性名称注入,注入值bean的id值和属性名称一样。

      byTpye:根据属性类型注入,会自动匹配配置文件中相同类型的对象,如果有两个相同类型对象则会报错。

 

  引入外部属性文件

    <context:property-placeholder location="classpath:路径名">

    使用${} 表达式就可以取属性文件中对应的属性值

 

 

 

 

 

 

 

 

 

  

posted @ 2020-11-20 23:37  doubisme  阅读(100)  评论(0)    收藏  举报