Spring基础---IoC使用拓展
程序员文章站
2022-03-19 14:57:04
...
<!-- 配置纸张 -->
<bean id="A4" class="paper.TextPaper">
<property name="lineCountChar" value="5"></property>
<property name="lineInPage" value="10"></property>
</bean>
这种注入称为设值注入,此外还有一些其他的注入方式
一、构造注入
<!-- 构造注入 -->
<bean id="A1" class="paper.TextPaper">
<constructor-arg value="4" name="lineCountChar"></constructor-arg>
<constructor-arg value="10" name="lineInPage" ></constructor-arg>
</bean>
一个"constructor-arg"元素表示构造方法的一个参数,且使用时不区分顺序. 为了避免构造方法的参数出现混淆,无法区分时,可以通过"constructor-arg"元素的name(对应构造的参数名)属性和type(对应构造的参数类型)属性来进行限定.
二、使用p命名空间实现属性注入
首先,使用前要先添加p命名空间的声明:
xmlns:p="http://www.springframework.org/schema/p"
<!-- 在application头 添加 -->
用于p命名空间注入属性
<bean id="user" class="entity.User" p:username="张三" p:age="23" ></bean>
三、注入不同类型数据类型
1、注入特殊字符的值
<bean id="user4" class="entity.User">
<property name="name">
<!‐‐ 两种都可以 ‐‐>
<!‐‐<value><![CDATA[a>b&&3<4]]></value>‐‐>
<value>a>b&&3<4</value>
</property>
</bean>
<!-- 少量可以使用预定义的实体引用 大量的话建议使用 <![CDATA[.....]]> 节-->
2、引用其他Bean组件
<!-- 配置一个狗狗类 -->
<bean id="dog" class="entity.Dog" >
<property name="id" value="5"></property>
<property name="name" value="小黑"></property>
</bean>
<!-- 配置主人类 -->
<bean id="master" class="entity.Master" >
<property name="id" value="1"></property>
<property name="pet">
<!‐‐只在本配置文件中查找"<ref local="dog"/>"-->
<!‐‐ 可以在本配置文件以及相关的配置文件中找-->
<ref bean="dog"/>
</property>
</bean>
Spring中定义的Bean可以互相引用,除了使用ref属性还可以通过<ref>子元素实现
<ref>子元素的bean属性和local属性都可以用来指定要引用的Bean的id.
区别是:local属性只能在同一个配置文件中查找
而bean属性可以在本配置文件以及相关的配置文件中找
3、使用内部Bean—–>只在该处使用
<!-- 配置主人类 -->
<bean id="master" class="entity.Master" >
<property name="id" value="1"></property>
<property name="pet">
<bean class="entity.Dog" >
<property name="id" value="5"></property>
<property name="name" value="小黑"></property>
</bean>
</property>
</bean>
4、注入集合类型属性
新建实体类User
1)、注入List集合(数组类型)属性
对于List或数组类型的属性,可以使用”<list>”标签注入
<bean id="user" class="entity.User">
<property name="strs">
<list>
<value>su1</value>
<value>su2</value>
<value>su3</value>
</list>
</property>
<property name="list">
<list>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</list>
</property>
</bean>
“<list>”标签中间可以使用<value>、<ref>等标签注入集合元素,甚至是另一个<list>标签
2)、注入Set类型的属性
<bean id="user" class="entity.User">
<property name="set">
<set>
<value>s1</value>
<value>s2</value>
<value>s3</value>
</set>
</property>
</bean>
set标签中也可以使用 value、ref等标签注入集合元素
3)、注入Map类型的属性
<bean id="user" class="entity.User">
<property name="map">
<map>
<entry key="name" value="abc"></entry>
<entry key="age" value="22"></entry>
</map>
</property>
</bean>
如果Map中的键或值是Bean对象, 可以把上面代码中的 key、value属性换成对应的 key-ref、value-ref属性
4)、注入Properties类型的属性
<bean id="user" class="entity.User">
<property name="props">
<props>
<prop key="p1">pop1</prop>
<prop key="p2">pop2</prop>
</props>
</property>
</bean>
Properties 中的键和值通常都是字符串类型
5)、注入null和空字符串值
<!-- 注入空串 -->
<bean id="user" calss="entity.User">
<property name="email"><value></value></property>
</bean>
<!-- 注入null值 -->
<bean id="user" calss="entity.User">
<property name="email"><null/></property>
</bean>
上一篇: MAC安装Python
下一篇: house price