1、手动注入
(1)set注入
public class UserService { private UserDao userDao; public void setUserDao(UserDao dao){ this.userDao = dao; } }
<bean id="userDao1" class="com.spring1.dao.UserDao"></bean> <bean id="userService" class="com.spring1.service.UserService"> <property name="userDao" ref="userDao1"></property> </bean>
通过userService对象的setUserDao方法,将userDao1注入进去。
public class User { int id; String name; String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
public class UserDao { public void setShowUser(User user){ System.out.println(user.getId()+":"+user.getName()+":"+user.getPassword()); } }
<bean id="user" class="com.spring1.entity.User"> <property name="id" value="1"></property> <property name="name" value="zhangsan"></property> <property name="password" value="123456"></property> </bean> <bean id="userDao1" class="com.spring1.dao.UserDao"> <property name="showUser" ref="user"></property> </bean>
在bean配置中对user初始化,userDao1通过自己的setShowUser方法将user注入
(2)构造方法注入
<bean id="userDao1" class="com.spring1.dao.UserDao"> </bean> <bean id="testService" class="com.spring1.service.UserService"> <constructor-arg name="userDao1" ref="userDao1"></constructor-arg> </bean>
@Test public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService service = (UserService) ac.getBean("testService"); service.showUser(); }
public class UserService { private UserDao userDao; public UserService(UserDao userDao1){ this.userDao = userDao; } public void showUser(){ System.out.print("ok-------------"); } }
构造函数参数的名字,要与类的构造参数的名字对应。
2、自动注入
<bean id="userDao2" class="com.spring1.dao.UserDao"></bean> <bean id="testService" class="com.spring1.service.UserService" autowire="byName"> </bean>
id=userDao2,下边的setUserDao2==userDao2是一样的。
public class UserService { private UserDao userDao; public void setUserDao2(UserDao userDao1){ this.userDao = userDao1; } public void showUser(){ userDao.showUser(); } }
byname自动注入的时候,就要顶一个一个name=类中的参数名字的bean