zoukankan      html  css  js  c++  java
  • 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

        

         

                         

  • 相关阅读:
    设计模式:简单工厂模式
    datav轮播表使用事例
    POI操作Excel常用方法总结 .
    序列图像三维重建 学习过程流水账
    python面向对象编程
    python批量生成word文档
    Linux 网络配置方法 nmtui 配置
    leetcode 剑指 Offer 67. 把字符串转换成整数 & leetcode 8. 字符串转换整数 (atoi)
    leetcode 剑指 Offer 59
    leetcode 剑指 Offer 53
  • 原文地址:https://www.cnblogs.com/hjiongjiong/p/4556339.html
Copyright © 2011-2022 走看看