5.Spring-使用XML Schema简化配置

本文最后更新于2024.04.28-04:14,某些文章具有时效性,若有错误或已失效,请在下方留言或联系涛哥

1.命名空间

由于XML文件中,各类标签可能存在冲突,我们引入了命名空间的概念来解决冲突。

 2.xmlns

xmlnamespace

3.使用p:命名空间 来简化 设值注入

a.在beans加入 p命名空间的配置(使用xsd作为配置)  xmlns:p="http://www.springframework.org/schema/p"

b.在bean中 可以不在使用property标签,而是直接 p:属性名="属性值"的形式进行标量的设值注入 p:cName="奔驰" p:属性名-ref="beanId(Name)"的形式进行设值注入

<bean id="lover" class="com.edu.bean.Lover"></bean>
<bean id="user" class="com.edu.bean.User" p:cName="奔驰" p:lover-ref="lover">

4.使用c:命名空间来 简化 构造注入

a.在beans加入 xmlns:c="http://www.springframework.org/schema/c"

b:在bean中 可以不在使用 <constructro-arg> 标签,而是直接使用 c:构造方法参数名="属性值"标量 c:构造方法参数名-ref ="beanId(name)" 复合型的形式来进行 构造注入

<bean id="lover" class="com.edu.bean.Lover"></bean>
<bean id="user" class="com.edu.bean.User" p:cName="奔驰" p:lover-ref="lover">

5.使用util命名空间 来简化配置(自学)

a.在beans加入 xmlns:util="http://www.springframework.org/schema/util"

b.在bean中 使用 <util: constant /><util:property-path/><util:list/><util:map/><util:set/><util:properties/>

util给我们提供了以下几个属性:

  • constant:对于在配置文件中获取指定类的静态Field的值的一个简化配置,是FieldRetrievingFactoryBean的简化配置。

  • property-path:对于在配置文件中获取调用getter方法的一个简化配置,是PropertyPathFactoryBean的简化配置。

  • list:简化list作为bean的配置

    • id:该属性指定定义一个名为id的List bean实例。

    • list-calss:该属性指定spring使用哪个List实现类来创建bean实例。默认使用ArrayList作为实现类。

    • scope:指定该List bean实例的作用域。

  • map:简化map作为bean的配置

    • id:该属性指定定义一个名为id的Map bean实例。

    • map-calss:该属性指定spring使用哪个Map实现类来创建bean实例。默认使用HashMap作为实现类。、

    • scope:指定该Map bean实例的作用域。

  • set:简化set作为bean的配置

    • id:该属性指定定义一个名为id的Set bean实例。

    • set-calss:该属性指定spring使用哪个Set实现类来创建bean实例。默认使用HashSet作为实现类。

    • scope:指定该Set bean实例的作用域。

  • properties:加载一份properties属性文件

    • id:该属性指定定义一个名为id的Properties bean实例。

    • localtion:该属性指定资源文件的位置。

    • scope:指定该Properties bean实例的作用域。

   <bean id="circle" class="cn.itcast.spring._other.Circle">
        <property name="pi">
            <util:constant static-field="java.lang.Math.PI"/>
        </property>
    </bean>
    <!-- 使用util:constant将指定类的静态Field定义成容器中的Bean  -->
     <util:constant id="chin.age" static-field="java.sql.Connection.TRANSACTION_SERIALIZABLE"/>
​
    <!-- id值为PI的Bean,其值将会是circle.pi -->
    <util:property-path  id="PI" path="circle.pi"/>
​
    <!-- 使用util.properties加载指定资源文件 -->
     <util:properties id="confTest"location="classpath:test_zh_CN.properties"/>
​
     <!-- 使用util:list定义一个List集合,指定使用LinkedList作为实现类,如果不指定默认使用ArrayList作为实现类 -->
     <util:list id="chin.schools"  list-class="java.util.LinkedList">
           <!-- 每个value、ref、bean...配置一个List元素 -->
           <value>小学</value>
           <value>中学</value>
           <value>大学</value>
     </util:list>
​
     <!-- 使用util:set定义一个Set集合,指定使用HashSet作为实现类,如果不指定默认使用HashSet作为实现类-->
     <util:set id="chin.axes" set-class="java.util.HashSet">
           <!-- 每个value、ref、bean...配置一个Set元素 -->
           <value>字符串</value>
           <bean class="org.crazyit.app.service.impl.SteelAxe"/>
           <ref bean="stoneAxe"/>
     </util:set>
​
     <!-- 使用util:map定义一个Map集合,指定使用TreeMap作为实现类,如果不指定默认使用HashMap作为实现类 -->
     <util:map id="chin.scores" map-class="java.util.TreeMap">
           <entry key="数学" value="87"/>
           <entry key="英语" value="89"/>
           <entry key="语文" value="82"/>
     </util:map>

6.其他简化配置简单介绍

  • Spring-aop.xsd:简化Spring AOP配置

  • Spring-jee.xsd:简化Spring的Java EE配置

  • Spring-jms.xsd:简化Spring关于JMSde 配置

  • Spring-lang.xsd:简化Spring动态语言配置

  • Spring-tx.xsd:简化Spring事务配置

阅读剩余
THE END