bean调用的新思路,
属性注入的原理
就是bean所调用的目标类文件里有需要赋值的参数,在bean中以property的形式注入 或 用构造方法注入
注入后自动匹配需要赋值的变量(参数)
最后bean被实例调用,实例(对象)中的参数是有值的。
同样的,目标类文件里有需要赋值的object类时,在property里用ref调用准备好的bean,来给目标类文件里的对象赋值。
Spring 可以通过对Bean的引用,引用简单的值。
利用<Bean></Bean>标签中的<property/>标签,在property里设置值。即setter注入。
<beans ...>
<bean id="id1" class="class1">
<property name="parameter" value="pvalue">
</bean>
</beans>
在class1中有一个需要赋值的参数parameter,在bean的属性中为parameter赋予值pvalue
这样在调用bean1时,class1中的参数是有值的
详细参考
在property里的value里注入自己想要用的值,即可引用。
Spring还可以在DI的帮助下将各个Bean连接起来。
可以用<property>元素的ref属性为Bean属性指定Bean引用。
ref属性通过传递另一个bean的引用来设置bean的指定属性的值。
首先需要建立一个bean
<bean id="bean1" class="class1"></bean>
再建立其他的bean
<bean id="bean2" class="class2">
<property name="ref1" ref="bean1"/>
</bean>
在class2中有一个class1对象需要赋值,就需要在bean2里做准备
准备好class1对应的bean1,在bean2中用ref属性调用bean1,这样bean2 对应的class2里的class1对象就有了值
构造函数注入
注入属性还可以用构造方法注入
<constructor-arg name="parameter" value="value">
详细可以查看 spring 属性注入(新)
如:
package SettetInject;
public class FootballPlayer{
private int number;
public FootballPlayer(){}
public FootballPlayer(int number){
this.number=number;
}
public void play(){
System.out.println("the number is "+ number);
}
}
<bean id="bean1" class="SetterInject.FootballPlayer">
<constructor-arg value="15">
<!--声明目标函数中需要的参数为15-->
<!--当目标类文件只有一个属性(变量)时,可以不写name-->
</bean>
无论是哪种注入属性的方法,都需要保证name和目标类的参数(变量)一致