您的位置:首页 > 编程语言 > Java开发

Spring基础---IoC使用拓展

2017-11-14 19:21 218 查看
<!-- 配置纸张 -->
<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ioc