前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring-注入参数详解-[简化配置方式]

Spring-注入参数详解-[简化配置方式]

作者头像
小小工匠
发布2021-08-16 16:28:19
2480
发布2021-08-16 16:28:19
举报
文章被收录于专栏:小工匠聊架构

概述

Spring为字面值、引用Bean和集合都提供了简化的配置方式,如果没有用到完整格式的特殊功能,大可使用简化的配置方式。

字面属性值

字面值属性

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="plane" class="com.xgj.ioc.inject.set.Plane">
     
    
    <property name="brand" value="Airbus&A380"/>
    <property name="color" value="red"/>
    <property name="speed" value="700">property>
    bean>
beans>

使用简化方式,则无法使用

构造函数参数

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="tank" class="com.xgj.ioc.inject.construct.type.Tank">

        

         
         <constructor-arg type="java.lang.String"  value="T72"/>
         <constructor-arg  type="double" value="20000.00"/>

    bean>
beans>

集合元素

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="pets" class="com.xgj.ioc.inject.construct.jihe.strongType.Pets">
        <property name="map">
        
        
            <map>
                <entry key="111" value="cat"/>
                <entry key="113" value="bird"/>
                <entry key="115" value="dog"/>
            map>
        property>
    bean>

    <bean id="petShop" class="com.xgj.ioc.inject.construct.jihe.strongType.PetShop">
        <property name="pets" ref="pets" />
    bean>

beans>

引用对象属性

字面值属性

复杂的方式

代码语言:javascript
复制
<property name="plane">
    <ref bean="plane"/>
property>

简化的方式

代码语言:javascript
复制
<property name="plane" ref="plane"/>

构造函数参数

复杂的方式

代码语言:javascript
复制
<constructor-arg>
    <ref bean="plane">
constructor-arg>

简化的方式

代码语言:javascript
复制
<constructor-arg ref="plane">

集合元素

复杂的方式

代码语言:javascript
复制
<map>
    <entry>
        <key>
            <ref bean="keyBean"/>
        key>
        <ref bean="valueBean"/>
    entry>
map>

简化的方式

代码语言:javascript
复制
<map>
    <entry key-ref="keyBena" value-ref="valueBean"/>
</map>

ref标签的简化形式对应于 而 和 没有对应的简化形式


使用P命名空间

Spring2.5版本之后引入了新的p命名空间,可以通过bean元素属性的方式配置bean的属性。

使用p命名空间后,基于XML的配置方式将进一步简化。

需要引入

代码语言:javascript
复制
xmlns:p="http://www.springframework.org/schema/p"

通过p命名空间引用字面属性值

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    引入p命名空间
    xmlns:p="http://www.springframework.org/schema/p"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    
    <bean id="plane" class="com.xgj.ioc.inject.set.Plane"
        p:brand="Airbus&A380"
        p:color="red"
        p:speed="700"
    >
    bean>

beans>

通过p命名空间引用其他bean

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    

     
    <bean id="police" class="com.xgj.ioc.inject.construct.ref.Police"
        p:gun-ref="gun"/>

    <bean id="gun" class="com.xgj.ioc.inject.construct.ref.Gun" />
beans>

未采用p命名空间前,使用子元素配置Bean的属性, 采用p命名空间后,采用的元素属性配置Bean的属性。

对于字面值属性,其格式为

代码语言:javascript
复制
p:<属性名>-ref="xxx"

对已引用对象的属性,其格式为:

代码语言:javascript
复制
p:<属性名>-ref="xxx"

正是由于p命名空间中的属性名是可变的,所以p命名空间没有对应的schema定义文件,也无需在xsi:schemaLocation中为p命名空间指定Schema定义文件.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/07/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 字面属性值
    • 字面值属性
      • 构造函数参数
        • 集合元素
        • 引用对象属性
          • 字面值属性
            • 构造函数参数
              • 集合元素
              • 使用P命名空间
                • 通过p命名空间引用字面属性值
                  • 通过p命名空间引用其他bean
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档