注入类型:
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