Spring 属性注入细节
2016-07-27 17:09
295 查看
Spring 属性注入细节
字面值字面值:可用字符串表示的值,可以通过< value >元素标签或value属性进行注入。
基本数据类型及其封装类型、String等类型都可以采取字面值注入的形式。
若字面值中包含特殊字符,可以使用< ![CDATA[]] >把字面值包起来。
<bean id="dog2" class="com.metadata.action.Dog"> <constructor-arg value="柴犬" type="java.lang.String"/> <constructor-arg type="java.lang.String" > <!-- 如果字面值包含特殊字符可以使用<![CDATA[]]>包含起来 --> <!--属性值可以使用value子节点进行配置--> <value><![CDATA[<red>]]></value><!--color=<red> --> </constructor-arg> <constructor-arg type="java.lang.Double"> <value>10.23</value> </constructor-arg> </bean>
引用其它Bean
组成应用程序的的Bean经常需要相互协作以完成应用程序的功能,要使Bean能够相互访问就必须在Bean配置文件中指定对Bean的引用。
在Bean的配置文件中,可以通过< ref >元素或ref属性为Bean的属性或构造器参数指定对Bean 的引用。
可以在属性或构造器里包含Bean的声明,这样的Bean成为内部Bean。
<bean id="dog" class="com.metadata.action.Dog"> <constructor-arg value="哈士奇" index="0"/> <constructor-arg value="yellow" index="1" /> <constructor-arg value="2" type="int"/> </bean> <bean id="person" class="com.metadata.action.Person"> <property name="name" value="tom"></property> <property name="age" value="20"></property> <!-- 使用property的ref属性建立bean之间的引用关系 --> <!-- <property name="dog" ref="dog"></property> --> <!-- 通过ref节点 --> <!-- <property name="dog"> <ref bean="dog"/> </property> --> <!-- 内部bean,不能被外部引用,只能内部使用 --> <property name="dog"> <bean class="com.metadata.action.Dog"> <constructor-arg value="旺财" /> <constructor-arg value="black"/> <constructor-arg value="1000" type="java.lang.Double"/> </bean> </property> </bean>
注入参数详解:null值和级联属性
可以使用专用的< null/>元素标签为Bean的字符串或其它对象类型的属性注入null值。
和Struts、Hiberante等框架一样,Spring支持级联属性的配置。
<bean id="person2" class="com.metadata.action.Person"> <constructor-arg value="jack" /> <constructor-arg value="26" /> <!-- <constructor-arg><null/></constructor-arg> --> <constructor-arg ref="dog" /> <!-- 为级联属性赋值,注意:属性需要先初始化后才可以为属性赋值 --> <property name="dog.color" value="#ffffff" /> </bean> </bean>
集合属性
在Spring中可以通过一组内置的xml标签(例如:< list >、< set >、< map >)来配置集合的属性
配置java.util.List类型的属性,需要指定< list >标签,在标签里包含一些元素,这些标签可以通过< value >指定简单的常量值,通过< ref >指定对其他Bean的引用,通过< bean >指定内置Bean定义。通过< null >指定空元素,甚至可以内嵌其他集合。
4000
数组的定义和List一样,都使用< list >
-配置java.util.Set需要使用< set >标签,定义元素的方法与List一样。
<bean id="list" class="com.metadata.list.Person"> <property name="name" value="marry" /> <property name="age" value="18" /> <property name="dogs"> <!-- 通过list节点为List类型的属性赋值 --> <list> <ref bean="dog"/> <ref bean="dog2"/> <bean class="com.metadata.action.Dog"> <property name="name" value="haha" /> <property name="color" value="gray" /> </bean> </list> </property> </bean>
Java.util.Map通过< map >标签定义,< map >标签里可以使用多个< entrty >作为子标签,每个条目包含一个键和一个值。
必须在< key >标签里定义建。
因为建和值的类型没有限制,所以可以自由地位他们指定< value >、< ref >、< bean >、或< null >元素。
可以将Map的建和值作为< entry >的属性定义:简单常量使用key和value来定义;Bean引用通过key-ref和value-ref属性定义
使用< props >定义java.util.Properties,该标签使用多个< prop >作为子标签,每个< prop >标签必须定义key属性
<bean id="newPerson" class="com.metadata.list.NewPerson"> <property name="name" value="lili" /> <property name="map"> <map> <entry key="AA" value-ref="dog" /> <entry key="BB" value-ref="dog2" /> </map> </property> </bean>
<!-- 配置properties属性值 --> <bean id="dateSource" class="com.metadata.list.DateSource"> <property name="properties"> <props> <prop key="user">root</prop> <prop key="password">root</prop> <prop key="jdbcurl">http://127.0.0.1:3306</prop> </props> </property> </bean>
使用utility schema定义集合
使用基本的集合标签定义集合时,不能将集合作为独立的Bean定义,导致其他Bean无法引用该集合,所以无法再不同Bean之间共享集合。
可以使用utility schema里面的集合标签定义独立的集合Bean,需要注意的是,必须在< beans >根元素里添加 util schema定义。
<!-- 配置单例的集合Bean,以供多个Bean进行引用,需要导入util命名空间(Namespaces中选取) --> <util:list id="utillist"> <ref bean="dog"/> <ref bean="dog2"/> </util:list> <bean id="per" class="com.metadata.list.Person"> <property name="name" value="hh"/> <property name="dogs" ref="utillist" /> </bean>
<!-- 通过p命名空间为Bean属性赋值,需要导入p命名空间 --> <bean id="plist" class="com.metadata.list.Person" p:name="xm" p:age="20" p:dogs-ref="utillist"></bean>
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- 监听器获取Spring配置文件的方法
- Java利用Sping框架编写RPC远程过程调用服务的教程
- springmvc 发送ajax出现中文乱码的解决方法汇总
- Spring MVC中Ajax实现二级联动的简单实例
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- 详解Java的MyBatis框架和Spring框架的整合运用
- struts2 spring整合fieldError问题