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、接口注入
一般不需要记住!