首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring器皿的依赖注入方式(一)

2012-09-02 
Spring容器的依赖注入方式(一)PersonServiceBean类中有一个PersonDao的属性,现在需要将PersonDaoImpl类的

Spring容器的依赖注入方式(一)

PersonServiceBean类中有一个PersonDao的属性,现在需要将PersonDaoImpl类的实例通过Spring容器注入到PersonServiceBean类中。

?? ?PersonDao.java

package com.risetek.dao;public interface PersonDao {public abstract void add();public abstract void save();}

?????PersonDaoImpl.java

package com.risetek.dao.impl;import com.risetek.dao.PersonDao;public class PersonDaoImpl implements PersonDao {@Overridepublic void add(){System.out.println("add...");}@Overridepublic void save(){System.out.println("save...");}}

?? PersonService.java

package com.risetek.service;public interface PersonService {public abstract void add();public abstract void save();}

??? PersonServiceBean.java

package com.risetek.service.impl;import com.risetek.dao.PersonDao;import com.risetek.service.PersonService;public class PersonServiceBean implements PersonService {private PersonDao personDao;@Overridepublic void save(){this.personDao.save();}@Overridepublic void add() {this.personDao.add();}}

?

方式一:让spring容器通过属性的setter方法进行注入,因此PersonServiceBean中必须提供属性的set方法

?? ?PersonServiceBean.java

public class PersonServiceBean implements PersonService {....public void setPersonDao(PersonDao personDao) {this.personDao = personDao;}                ....}

??? 要让容器创建PersonDaoImpl的实例,必须要将PersonDaoImpl交给容器管理,才能进行依赖注入:

??? 此时有两种方式配置beans.xml:

??? 1.通过内部Bean的形式配置

<bean id="personServiceBean" name="code"><!-- 将需要注入的类型交给spring管理 --><bean name="personDao" ref="personDao"/></bean>

?

方式二:通过类的构造器进行注入,因此PersonServiceBean需要提供构造方法

??? PersonServiceBean.java

public class PersonServiceBean implements PersonService {                .....public PersonServiceBean(PersonDao personDao){this.personDao = personDao;}                .....}

????配置beans.xml文件:

<!-- 将需要注入的类型交给spring管理 --><bean name="personDao" type="com.risetek.dao.PersonDao" ref="personDao"/></bean>

??? 同样也可以使用内部Bean的形式注入PersonDaoImpl对象

<bean id="personServiceBean" class="com.risetek.service.impl.PersonServiceBean"><!-- index为构造器参数索引 --><constructor-arg index="0"><bean class="com.risetek.dao.impl.PersonDaoImpl"></bean></constructor-arg></bean>

?

?

热点排行