注入参数:
在sprintg配置文件中,用户不但可以将string,int 等字面值注入到Bean中,还可以将集合、Map等类型数据注入到Bean中,此外还可以在注入的配置文件中
定义其他Bean
内部Bean:
如果car Bean 只被boss Bean 引用而不被其他的Bean引用,则可以使用内部Bean的方式注入到Boss中:
Spring支持级联属性的配置。假设我们希望在定义Boss时直接为Car的属性提供注入值,如下:
如果希望配置一个集合类型的Bean,而非一个集合类型的属性,则可以通过util命名空间进行配置,首先要在Spring配置文件头中引入util命名空间的声明
xmln:xsi:"http://www.springframework.org/schema/uril"
下面是配置集合类型的Bean:
使用p命名空间:手下必须在spring配置文件中声明p命名空间:xlmn:p="http://www.springframework.org/schema/p"
自动装配:spring提供了Bean的自动装配机制
<bean>元素提供了一个指定自动装配类型的属性:autowire="<自动装配类型>"。
spring提供了4种装配类型:
byName:根据名称自动进行装配
byType:根据类型进行自动装配
constructor:与ByType类似只不过是针对构造函数注入而言的
aurodetect:根据Bean的自省机制决定采用byType还是constructor进行装配
在sprintg配置文件中,用户不但可以将string,int 等字面值注入到Bean中,还可以将集合、Map等类型数据注入到Bean中,此外还可以在注入的配置文件中
定义其他Bean
引用其他Bean:
Spring IoC容器中定义的bean可以相互引用,IoC容器则充当红娘的作用。以下是创建一个新的Boss类,Boss类中拥有一个Car类型的属性:
package com.baobaotao.attr;
public class Boss{
private Car car;
public void setCar(Car car){
this.car=car;
}
}
bean的Bean通过<ref>元素引用car Bean,建立起boss对car的依赖:
<!--car bean-->
<!--<../>的作用是标记结束,是没有内容的等同于<..></..>-->
<bean id="car" class="com.baobaotao.attr.Car"/>
<bean id="boss" class="com.baobaotao.attr.Boss">
<property name="car">
<!--引用上面定义的car Bean-->
<ref bean="car"></ref>
</prperty>
<bean>
如果两个Bean分别在父子容器中,在子容器中想使用父容器中的Bean那么采用parent属性。
内部Bean:
如果car Bean 只被boss Bean 引用而不被其他的Bean引用,则可以使用内部Bean的方式注入到Boss中:
<bean id="boss3" class="com.baobaotao.attr.Boss">
<property name="car">
<bean class="com.baobaotao.attr.Car">
<property name="maxSpeed" value="200"/>
<property name="price" value="2000.00"/>
</bean>
</property>
</bean>
内部Bean与Java中的内部类比较相似。
null值:
<property name="brand"><null/></property>
级联属性:
Spring支持级联属性的配置。假设我们希望在定义Boss时直接为Car的属性提供注入值,如下:
<bean id="boss3" class="com.baobaotao.attr.Boss">
<property name="car.brand" value="吉利CT50"/>
</bean>
但这样必须对Boss类进行改造,为Car属性声明一个初始化对象:
public class Boss{
private Car car=new Car();
public Car getCar(){
return car;
}
public void setCar(Car car){
this.car=car;
}
}
联合类型属性:
List:
public class Boss{
private List favorties=new ArrayList();
public List getFavorties(){
return favorties;
}
public void setFavorties(List favoties){
this.favorties=favorties;
}
}
配置:
<bean id="boss1" class="com.baobaotao.attr.Boss">
<property name="favorties">
<list>
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</list>
</property>
</bean>
Set配置:
<bean id="boss1" class="com.baobaotao.attr.Boss">
<property name="favorties">
<set>
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</set>
</property>
</bean>
Map配置:
<bean id="boss1" class="com.baobaotao.attr.Boss">
<property name="favorties">
<map>
<entry>
<key>..</key>
<value>??</value>
</entry>
<entry>
<key>??</key>
<value>??</value>
</entry>
</map>
</property>
</bean>
通过util命名空间配置集合类型的Bean:
如果希望配置一个集合类型的Bean,而非一个集合类型的属性,则可以通过util命名空间进行配置,首先要在Spring配置文件头中引入util命名空间的声明
xmln:xsi:"http://www.springframework.org/schema/uril"
下面是配置集合类型的Bean:
<util:list id="favortieList1" class="java.util.LinkedList">
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</util:list>
下面是一个配置set类型的Bean,可以通过set-class指定Set实现类:
<util:set id="favortieSet1">
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</util:set>
最后是Map类型的Bean的配置,可以通过map-class指定Set实现类:
<util:map id="favoriteMap1">
<entry key="AM" value="会见客户"/>
<entry key="PM" value="公司内部会议"/>
</util:map>
简化配置方式:
使用p命名空间:手下必须在spring配置文件中声明p命名空间:xlmn:p="http://www.springframework.org/schema/p"
<bean id="car1" class="com.baobaotao.attr.Car" p:brand="红旗&CA72" p:maxSpeed="200" p:price="20000.00"/>
<bean id="boss" class="com.baobaotao.attr.Boss" p:car-ref="car"/>
也就是说:对于字面属性p:<属性名>="xxx" 对于引用对象 p:<属性名>_ref="xxx"
自动装配:spring提供了Bean的自动装配机制
<bean>元素提供了一个指定自动装配类型的属性:autowire="<自动装配类型>"。
spring提供了4种装配类型:
byName:根据名称自动进行装配
byType:根据类型进行自动装配
constructor:与ByType类似只不过是针对构造函数注入而言的
aurodetect:根据Bean的自省机制决定采用byType还是constructor进行装配