注入类型:
a)Setter(重要)
b)构造方法
c)接口注入
1.Setter注入:
例子:
在beans.xml配置:
测试:
2.构造方法注入:
在beans.xml配置:
如果在<constructor-arg>中加<bean class="xy.bar">相当于重新new了一个bean。
而上面的<ref bean="u"/>是参考了另外的已经初始化的一些bean。
测试:
注意:构造方法里如果有两个参数,这两个参数是同一个类型,那么在传值的时候,哪个传在第一个,哪个传在第二个呢?在XML如何配置?
可以定索引,也可以定类型。
这里介绍定索引:
构造方法的使用并不多。
a)Setter(重要)
b)构造方法
c)接口注入
1.Setter注入:
例子:
package cn.edu.hpu.service; import cn.edu.hpu.dao.UserDao; import cn.edu.hpu.dao.Impl.UserDaoImpl; import cn.edu.hpu.model.User; public class UserService { private UserDao userDao; public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void add(User u){ this.userDao.save(u); } }
在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="cn.edu.hpu.dao.Impl.UserDaoImpl"> </bean> <bean id="userService" class="cn.edu.hpu.service.UserService"> <property name="userDao" ref="u" /> </bean> </beans>
测试:
@Test public void testAdd() throws Exception{ BeanFactory ctx=new ClassPathXmlApplicationContext("beans.xml"); UserService userService=(UserService)ctx.getBean("userService"); User u=new User(); u.setUsername("u1"); u.setPassword("p1"); userService.add(u); }测试成功!
2.构造方法注入:
例子:
UserService.java:
package cn.edu.hpu.service; import cn.edu.hpu.dao.UserDao; import cn.edu.hpu.dao.Impl.UserDaoImpl; import cn.edu.hpu.model.User; public class UserService { private UserDao userDao; public UserService(){ } 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="cn.edu.hpu.dao.Impl.UserDaoImpl"> </bean> <bean id="userService" class="cn.edu.hpu.service.UserService"> <constructor-arg> <ref bean="u"/> </constructor-arg> </bean> </beans>
如果在<constructor-arg>中加<bean class="xy.bar">相当于重新new了一个bean。
而上面的<ref bean="u"/>是参考了另外的已经初始化的一些bean。
测试:
@Test public void testAdd() throws Exception{ BeanFactory ctx=new ClassPathXmlApplicationContext("beans.xml"); UserService userService=(UserService)ctx.getBean("userService"); User u=new User(); u.setUsername("u1"); u.setPassword("p1"); userService.add(u); }测试成功!
注意:构造方法里如果有两个参数,这两个参数是同一个类型,那么在传值的时候,哪个传在第一个,哪个传在第二个呢?在XML如何配置?
可以定索引,也可以定类型。
这里介绍定索引:
<bean id="userService" class="cn.edu.hpu.service.UserService"> <constructor-arg index="0" value="75800000"/> <constructor-arg index="1" value="42"/> </bean>用index来制定传值的顺序(类型不一样要指定type属性,如type="int")
构造方法的使用并不多。
3.接口注入:使用极少,用到再查
转载请注明出处:http://blog.csdn.net/acmman