Spring框架二

Bean管理

   1、BeanFactory介绍:Spring容器,也称为Spring的上下文,是产生Bean的工厂,是Spring依赖注入的核心。

         Bean:在Spring应用场景中,Bean可以使数据源,java普通类,还可以是hibernate框架的sessionFactory、事务组件等等

        1、在Spring技术中是基于组件的。

        2、最基本也是最常见的单元。

        3、其实例保存在Spring容器当中

   2、BeanFactory的作用:

            1、配置、创建以及管理Bean对象

            2、维持Bean对象之间的依赖关系。

            3、负责Bean对象的生命周期。

   3、ApplicationContext实现类:

            1、读取Bean定义文件。

            2、维护Bean之间的依赖关系。 

            3、国际化的支持。

            4、资源访问、事件传播

   4、Bean定义

        1、配置文件:

            1、<beans/>是Spring配置文件的根节点。

            2、一个<beans/>节点里面可以有多个<bean/>节点

        2、定义<bean/>节点:通常指定2个属性:id用来指定bean的唯一标识符,class用来指明bean的具体实现类。

        3、Bean在Spring容器中的两种行为:

            singleton:整个Spring容器只有一个共享实例存在,也就是单例;

            non-singleton:非单例,每次请求该Bean,Spring容器都会新建立一个Bean实例。

   5、创建Bean:

        1、Bean的命名:使用清晰的,描述性的,一致性的命名规范。查找顺序id--name---类名

        2、Bean的别名:通过alias元素指定 如<alias name="fromname" alias="alisaname" />

        3、生命一个简单Bean:创建xml文件---写入配置信息---生成Bean类---加入Bean到配置文件。

        4、注入属性:

            a、注入基本类型和String类型:使用<value>元素,XML解析器以String类型解析出来,再通过propertyEditots转换类型。

            b、注入Bean:<ref/>元素进行标识,ref元素的来个属性Bean:表示来自不同xml的bean,local:表示来自相同xml的bean。

                     c、注入集合类型属性:(1)List属性:<list>标签中间可以使用<value>、<ref>等标签注入集合元素,甚至是另外一个<list>标签。

                                (2)例<list><value>1</value><value>2</value>.....</list>

                      (3)set属性:<set>标签,用法与<list>

                      (4)Map属性:<map>标签,如果Map中的键或者值是Bean对象,可以把<value>换成<ref>

                      例:<map> <entry><key><value>键</value></key> <value>值</value></entry></map>

                      (5)properties类型属性:使用<props>标签,其键和值通常为字符串类型

                      例:<props> <prop key="keyname">值</prop>....</props>

                      (6)注入空值:<value></value>,注入NULL值<null/>

        5、Bean元素的作用域:使用scope属性指定:

               1、singleton:默认值,单例

               2、prototype:非单例。

               3、request:用于WEB应用环境,针对每次HTTP请求都会创建一个新的Bean实例。

               4、session:用于WEB应用环境,针对每次会话都会创建一个新的Bean实例。

               5、global session:尽在porlet的web应用中使用,全局会话创建一个实例。

        6、简化Spring loc配置

               1、使用p命名空间注入Bean属性:必须先添加命名空间的声明

<beans>
<!-- 添加p命名空间的声明 -->
    xmlns:p="http://www.springframework.org/schema/p"
<!-- 使用p命名空间注入Bean的属性 -->
    <bean id="name" class="spring.HelloSpring"
    p:name="林冲" 
    />
</benas>

                                          2、在Spring配置文件中实现自动装配:<bean>元素的autowire提供了一种自动注入依赖对象的机制,配置Bean时不需要做任何显示指定,Spring会自动查找符合条件的依赖对象并实施注入。

              例:no:默认值,不自动装载。 byName:根据属性名自动匹配。 byType:根据属性的类型自动匹配。 constructor:根据构造方法自动匹配。

<!-- 使用自动装载注入依赖对象,在spring.HelloSpring中的属性名,自动查找配置的Bean进行注入-->
    <bean id="name" class="spring.HelloSpring" autowire="byName" />

           6、高级管理:

     1、构造方法注入:使用constructor-org标签

<bean id="id" class="calss">
    <!--index表示构造参数的顺序下标,从0开始-->
    <!--使用该方法注入时,实体类必须有相应的构造方法-->
<constructor-org index="0">
    <value>value1</value>
</constructor>
</bean>

              2、aware相关接口:

    3、Bean属性编辑器:PropertyPlaceholderConfigurer-属性占位符编辑器

                作用:读取properties配置文件,修改某属性时不需要打开Spring配置文件,保证不会将新的错误导入Spring配置文件中。

                优点:可以从主xml配置文件中分离出部分配置信息,可以支持多个配置文件

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
       <property name="locations">
               <list>
                   <value>db.properties</value>
                   <!-- 如果有多个配置文件,加入多个value标签即可 -->
               </list>
       </property>
    </bean>

              propertyOverrodeConfigurer-另外一种占位符编辑器

                  会覆盖掉xml文件中的配置信息,属性格式为:BeanName.property=value

    

     

                     

原文地址:https://www.cnblogs.com/hjiongjiong/p/4556339.html