Spring框架学习(3):spring属性配置的细节
来源:互联网 发布:科怀莱昂纳德体测数据 编辑:程序博客网 时间:2024/06/04 17:53
本篇文章主要讲一下Spring属性配置的细节
一、Bean之间的引用
首先我们知道,组成应用程序的Bean经常需要相互协助以完成应用程序的功能,要使Bean能够相互访问就必须在Bean配置文件中指定对Bean的引用。有两种方法使Bean之间构成引用的关系
1.在配置文件中通过ref属性为Bean的属性或构造器参数指定对Bean的引用
首先写两个类Person和Address
package beans;public class Person {private String name;private Address address;public String getName() {return name;}public void setName(String name) {this.name = name;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic String toString() {return "Person [name=" + name + ", address=" + address + "]";}}
package beans;public class Address {private String city;private String street;public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getStreet() {return street;}public void setStreet(String street) {this.street = street;}@Overridepublic String toString() {return "Address [city=" + city + ", street=" + street + "]";}}
然后在配置文件中配置他们的引用关系
写一个main函数测试一下
2.在属性或者构造器中包含Bean的声明,即内部Bean,外部的其他Bean无法访问到该内部Bean。
在配置文件中配置他们的引用关系,其他不改变
<?xml version="1.0" encoding="UTF-8"?><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="person" class="beans.Person"><property name="name" value="Tom"></property><property name="address"><bean class="beans.Address"><property name="city" value="GuangZhou"></property><property name="street" value="Shangxiajiu"></property></bean></property></bean></beans>
二、Bean属性中带有特殊字符
当property属性的value值带有特殊字符,例如<>时,可以使用以下方法配置
<bean id="person" class="beans.Person"><property name="name" value="Tom"></property><property name="address"><bean class="beans.Address"><property name="city"><value><![CDATA[<GuangZhou>]]></value></property><property name="street" value="Shangxiajiu"></property></bean></property></bean>三、为级联属性赋值
<bean id="person" class="beans.Person"><property name="name" value="Tom"></property><property name="address" ref="address"></property><property name="address.city" value="ShangHai"></property></bean>需要注意的是,属性需要先初始化才可以为级联属性赋值
四、为集合属性赋值
配置List属性:
修改一下Person类,将地址改为List
package beans;import java.util.List;public class Person {private String name;private List<Address> addresses; public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Address> getAddresses() {return addresses;}public void setAddresses(List<Address> addresses) {this.addresses = addresses;}@Overridepublic String toString() {return "Person [name=" + name + ", addresses=" + addresses + "]";}}在配置文件中:
<?xml version="1.0" encoding="UTF-8"?><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="address1" class="beans.Address"><property name="city" value="GuangZhou"></property><property name="street" value="Shangxiajiu"></property></bean><bean id="address2" class="beans.Address"><property name="city" value="GuangZhou"></property><property name="street" value="Gongyuanqian"></property></bean><bean id="person" class="beans.Person"><property name="name" value="Tom"></property><property name="addresses"><list><ref bean="address1"/><ref bean="address2"/></list></property></bean></beans>配置Array属性与List差不多
配置Map属性:
修改一下Person类
package beans;import java.util.List;import java.util.Map;public class Person {private String name;private Map<String, Address> addresses;public String getName() {return name;}public void setName(String name) {this.name = name;}public Map<String, Address> getAddresses() {return addresses;}public void setAddresses(Map<String, Address> addresses) {this.addresses = addresses;}@Overridepublic String toString() {return "Person [name=" + name + ", addresses=" + addresses + "]";}}修改配置文件:
<?xml version="1.0" encoding="UTF-8"?><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="address1" class="beans.Address"><property name="city" value="GuangZhou"></property><property name="street" value="Shangxiajiu"></property></bean><bean id="address2" class="beans.Address"><property name="city" value="GuangZhou"></property><property name="street" value="Gongyuanqian"></property></bean><bean id="person" class="beans.Person"><property name="name" value="Tom"></property><property name="addresses"><map><entry key="AA" value-ref="address1"></entry><entry key="BB" value-ref="address2"></entry></map></property></bean></beans>五、通过p命名空间为bean属性赋值
需要先导入p命名空间,在配置文件的页面点NameSpaces,然后勾选p命名空间即可,p命名空间可以帮助我们更快捷得配置bean
配置文件如下:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"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="address" class="beans.Address"><property name="city" value="GuangZhou"></property><property name="street" value="Shangxiajiu"></property></bean><bean id="person" class="beans.Person"p:name="Tom" p:address-ref="address"></bean></beans>
0 0
- Spring框架学习(3):spring属性配置的细节
- Spring-3:bean的属性配置细节
- spring 配置属性细节
- Spring属性配置细节
- Spring学习笔记之属性配置细节
- spring 3 bean配置--注入属性配置细节(1)
- spring属性配置细节(1)
- spring属性配置细节(2)
- spring属性配置的一些细节(二)
- Spring4 学习笔记(4)-Spring 属性配置的一些细节
- 3.Spring属性配置细节
- (四) spring属性配置细节
- spring Bean属性配置细节
- Spring-04--Spring属性配置细节
- spring 4 bean配置--注入属性配置细节(2)
- (学习笔记)spring框架入门之配置bean(处理属性中有集合的情况)
- Spring框架的Bean细节
- 4.Spring学习笔记_属性配置细节(by尚硅谷_佟刚)
- NBUT [1223] Friends number
- Linux内核如何装载和启动一个可执行程序
- netty学习笔记(2)_tcp拆包/粘包问题
- DP经典应用(五)硬币问题
- Rigidbody
- Spring框架学习(3):spring属性配置的细节
- jQuery学习笔记之DOM节点操作
- 《Xception: Deep Learning with Depthwise Separable Convolutios》笔记
- 2017年蓝桥杯——小题总结
- 即时搜索的input和propertychange方法的优点
- 2017回顾过往(分享近期读的几本书)
- 自定义--随机数(4位)
- 文章标题
- LeetCode 344. Reverse String