Spring学习(3)Spring注入的三种方式

Spring 注入的3中方式

1)        setter注入(重要),也叫设值注入

2)        构造方法(可以忘记)

3)        接口注入(一般不用)

 

1、set注入

Set注入指的就是在接受注入的类中定义一个Set方法,并在参数中定义需要注入的元素。java类中通过写set方法来实现,bean中通过属性设值property的ref值来进行注入<property name="userDAO"ref="u" />

例如service中有个UserService的类,该类中定义了一个UserDao的对象

UserService.java

public class UserService {
	private UserDAO userDAO; //此处的userDao名称要和beans.xml中的property的名字一样
	public void add(User user) {
		userDAO.save(user);
	}
	public UserDAO getUserDAO() {
		return userDAO;
	}
	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
}

则在spring配置文件beans.xml中只需要作如下配置

    beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  <bean id="u" class="com.ynw.dao.impl.UserDAOImpl"/>

  <bean id="userService" class="com.ynw.service.UserService">
  	<property name="userDAO" ref="u" />
  </bean>
</beans>

2、构造注入

    构造注入指的就是在接受注入的类中定义一个构造方法,并在参数中定义需要注入的元素。和set注入不一样,他需要写一个构造函数,在构造函数中将bean注入进去,就不需要get、set方法了

UserService.java

public class UserService {
	
	private UserDAO userDAO;  
	public void add(User user) {
		userDAO.save(user);
	}
	public UserService(UserDAO userDAO) {
		super();
		this.userDAO = userDAO;
	}	
}

在beans.xml中也做了相应的变化

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  <bean id="u" class="com.ynw.dao.impl.UserDAOImpl"/>
  <bean id="userService" class="com.ynw.service.UserService">
  	 <constructor-arg>
  	 	<ref bean="u"/>
  	 </constructor-arg>
  </bean>
</beans>

3、接口注入

    一般不需要记住!


你可能感兴趣的:(spring,set,injection,注入,Constructor)