Spring依赖注入的方式
Spring依赖注入的方式:
1.构造函数注入
public class PersonServiceBean implements PersonService {private String name;private PersonDAO personDAO;public PersonServiceBean(PersonDAO personDAO, String name) {this.personDAO = personDAO;this.name = name;}}
?
<bean id="personDAO" ref="personDAO"></constructor-arg><constructor-arg index="1" value="spring"></constructor-arg></bean>
?
index属性用来显示指定构造构造参数的索引,通过使用索引属性不但可以解决多个简单属性的混淆问题,还可以解决有可能有相同类型的2个构造参数的混淆问题了,注意index是从0开始。但是当使用简单类型时,Spring将无法知道该值的类型,不借助其他帮助,他将无法仅仅根据参数类型进行匹配,比如下面的这个例子:
public class ExampleBean { private int age; private String name; public ExampleBean(int age, String name) { this.age= age; this.name= name; }}
这时可以通过使用'type'属性来显式指定那些简单类型的构造参数的类型,比如:??
<bean id="exampleBean" value="18"/> <constructor-arg type="java.lang.String" value="zhangsan"/></bean>
?
?
?2.Setter注入:?
通过调用无参构造器或无参static工厂方法实例化bean之后,调用该bean的setter方法,即可实现基于setter的DI。
package com.spring.service.impl;import com.spring.dao.PersonDAO;import com.spring.service.PersonService;public class PersonServiceBean implements PersonService {private PersonDAO personDAO;public PersonDAO getPersonDAO() {return personDAO;}public void setPersonDAO(PersonDAO personDAO) {this.personDAO = personDAO;}}
???
<bean id="personDAO" ref="personDAO"></property></bean>
property中的name属性的含义是PersonServiceBean类中有一个setPersonDAO方法??
?
最常用就是构造函数和Setter这两种注入方法,对于不常用接口方式的注入,这里不予介绍
?