Spring学习 之四种XML配置注入方式

mac2024-05-13  29

Spring容器帮我们实例化对象并且注入到需要该对象的类中。

Setter注入

public class ClassA { private ClassB classB; public void printClassB(){ System.out.println(classB); } public void setClassB(ClassB classB){ this.classB = classB; } } public class ClassB { }

applicationContext.xml配置文件:

<!-- <bean>中的id属性是bean的标识,必须唯一。class属性是类的完全限定名,指明由哪个类来实例化。 --> <bean id="classB" class="com.mvc.ClassB"/> <!-- <property>是用来指明要注入的属性和对象的,<property>标签中的name就是就是注入方法名去掉前面的set,剩下的这一截首字母大小写可不限。ref指向要注入的对象(id)。对象是引用实例,所以要用ref,如果是传值,则用value。 --> <bean id="classA" class="com.mvc.ClassA"> <property name="classB" ref="classB" /> </bean>

另外要注意的是:property name只和注入方法名相关,和内部属性名没有半毛关系。所以ClassA类改成下面这样也是可以的:

public class ClassA { private ClassB classBBB; public void setClassB(ClassB classB){ this.classBBB = classB; } }

构造器注入

构造函数也是一个注入点。现在我们把上例的setter注入改为构造注入。

public class ClassA { private ClassB classB; /*构造函数注入*/ public ClassA(ClassB classB){ this.classB = classB; } public void printClassB(){ System.out.println(classB); } }

applicationContext.xml配置文件: 将<property name="classB" ref="classB" /> 改为<constructor-arg ref="classB" /> 这样就完成了构造器注入。

多参数构造函数赋值:

<bean id="order" class="twm.spring.start.Order" > <constructor-arg index="0" value="张老三"></constructor-arg> <constructor-arg index="2" ref="notify"></constructor-arg> <constructor-arg index="1" value="2017877997"></constructor-arg> </bean>

静态工厂的方法注入

实例工厂的方法注入

最新回复(0)