Spring学习 Ioc篇二

5、spring依赖注入的方式

方法一:使用构造器方式进行注入

1、dao的类和接口

package com.cvicse.dao.impl;

import com.cvicse.dao.PersonDao;

public class PersonDaoBean implements PersonDao {
	public void add(){
		System.out.println("执行PersonDaoBean中的add()方法");
	}
}
package com.cvicse.service;

public interface PersonService {
	public void save();
}

 2、service类

import com.cvicse.dao.PersonDao;
import com.cvicse.service.PersonService;

public class PersonServiceBean implements PersonService {
	private PersonDao personDao;
	private String name;	
	
	public PersonServiceBean(PersonDao personDao, String name) {
		this.personDao = personDao;
		this.name = name;
	}

	public void save(){
		System.out.println(name);
		personDao.add();
	}
}

 要在构造函数进行注入,应采用如下的方式进行配置

<bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" /> 
<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
<constructor-arg index="0" type="cn.itcast.dao.PersonDao" ref="personDao"/>
<constructor-arg index="1" type=“java.lang.String” value="基本类型"/> 
 </bean> 

方法二:使用setter方法进行注入

 采用setter的方法进行注入时,基本属性和业务对象的注入有所不同,而基本类型的中的集合注入也是应该注意的。

1、service类

public class PersonServiceBean implements PersonService {
	private Set<String> sets = new HashSet<String>();
	private List<String> lists = new ArrayList<String>();
	private Properties properties = new Properties();
	private Map<String, String> maps = new HashMap<String, String>();
	
	public Map<String, String> getMaps() {
		return maps;
	}

	public void setMaps(Map<String, String> maps) {
		this.maps = maps;
	}

	public Properties getProperties() {
		return properties;
	}

	public void setProperties(Properties properties) {
		this.properties = properties;
	}

	public Set<String> getSets() {
		return sets;
	}

	public void setSets(Set<String> sets) {
		this.sets = sets;
	}

	public List<String> getLists() {
		return lists;
	}

	public void setLists(List<String> lists) {
		this.lists = lists;
	}

	public void save(){
		
	}
}

 

2.XML中的配置(注意,各种类型都具有了)

<bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" /> 
<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
<!--业务对象的注入方式 -->
  <property name="personDao" ref="personDao" /> 
<!--基本属性的注入方式 -->
   <property name="name" value="itcast" /> 
  <property name="id" value="88" /> 
<!--集合的注入方式 -->
<property name="sets">
<set>
  <value>第一个</value> 
  <value>第二个</value> 
  <value>第三个</value> 
  </set>
  </property>
<property name="lists">
<list>
  <value>第一个list元素</value> 
  <value>第二个list元素</value> 
  <value>第三个list元素</value> 
  </list>
  </property>
<property name="properties">
<props>
  <prop key="key1">value1</prop> 
  <prop key="key2">value2</prop> 
  <prop key="key3">value3</prop> 
  </props>
  </property>
<property name="maps">
<map>
  <entry key="key-1" value="value-1" /> 
  <entry key="key-2" value="value-2" /> 
  <entry key="key-3" value="value-3" /> 
  </map>
  </property>
  </bean>

 另外,对于业务对象,还具有如下的内部bean配置方式,但如果这样配置了,则该bean只能由外边的bean用

 

<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
<!-- 使用内部bean进行注入--> 
          	<property name="personDao">
          		<bean class="cn.itcast.dao.impl.PersonDaoBean"/>
          	</property>
  </bean>

方法三:使用Filed方式注入(即注解方式注入)

你可能感兴趣的:(DAO,spring,bean,xml,IOC)