Spring 三种注入方式
2017-06-15 11:12
197 查看
1.设置注入
先写demo代码
Uer.java
public class User {
private String username;
private String password;
public String getUsername()
{
return this.username;
}
public void setUsername(String name)
{
this.username = name;
}
public String getPassword()
{
return this.password;
}
public void setPassword(String password)
{
this.password = password;
}
}UserADO 接口:
public interface UerDAO{
public void save(User user);
}UserADOImpl类:
public class UserADOImpl implements UserADO {
public void save(User user)
{
System.out.println(user.getUsername() + user.getPassword());
}
}
ADO层是直接和DB打交道,这一层和mybatis或者hibernate结合;我们还要基于ADO创建service层。web工程中,一般分为ADO,service和web等,ADO负责数据的持久化,service负责业务,web层负责UI视图和用户交互。
UserService接口:
public interface UserService {
public void add(User user);
}UserServiceImpl类
public class UserServiceImpl implements UserService
{
private UserDAO userDAO;
public void add(User user)
{
userDAO.save(user);
}
public UserDAO getUserDAO()
{
return this.userDAO
}
public void setUserDAO(UserDAO userDAO)
{
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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <!-- 注册一个 UserDAOImpl 对象实例-->
<bean id="u" class="com.deciphering.dao.impl.UserDAOImpl">
</bean>
<!-- 注册一个 UserServiceImpl 对象实例-->
<bean id="userService" class="com.deciphering.dao.service.UserServiceImpl">
<!-- 将UserDAOImpl u 对象实例 注入到 UserServiceImpl 中的userDAO -->
<property name="userDAO">
<ref bean="u">
</property>
</bean>
</beans>
创建测试Junit 用例类 UserServiceTest:
public class UserServiceTest
{
@Test
public void testAdd() throw Exception
{
ApplicationContext ctx =
new ClassPathXmlApplicationContext("beans.xml");
UserServiceImpl service = (UserServiceImpl) stx.getBean("userService");
User u = new User();
u.setUsername("测试用户");
u.setPassword("123456");
service.add(u);
}
}
2.构造方式 注入
修改UserServiceImpl.java 增加构造方法
public class UserServiceImpl implements UserService
{
private UserDAO userDAO;
public UserServiceImpl(UserDAO userDAO)
{
super();
this.UserDAO = UserDAO;
}
public void add(User user)
{
userDAO.save(user);
}
public UserDAO getUserDAO()
{
return this.userDAO
}
public void setUserDAO(UserDAO userDAO)
{
this.userDAO = userDAO;
}
}
beans.xml修改
3.接口注入,我们需要特定的接口交给特定的类去注入,这种方式,带来污染,不能完全解耦。现在已被抛弃
先写demo代码
Uer.java
public class User {
private String username;
private String password;
public String getUsername()
{
return this.username;
}
public void setUsername(String name)
{
this.username = name;
}
public String getPassword()
{
return this.password;
}
public void setPassword(String password)
{
this.password = password;
}
}UserADO 接口:
public interface UerDAO{
public void save(User user);
}UserADOImpl类:
public class UserADOImpl implements UserADO {
public void save(User user)
{
System.out.println(user.getUsername() + user.getPassword());
}
}
ADO层是直接和DB打交道,这一层和mybatis或者hibernate结合;我们还要基于ADO创建service层。web工程中,一般分为ADO,service和web等,ADO负责数据的持久化,service负责业务,web层负责UI视图和用户交互。
UserService接口:
public interface UserService {
public void add(User user);
}UserServiceImpl类
public class UserServiceImpl implements UserService
{
private UserDAO userDAO;
public void add(User user)
{
userDAO.save(user);
}
public UserDAO getUserDAO()
{
return this.userDAO
}
public void setUserDAO(UserDAO userDAO)
{
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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <!-- 注册一个 UserDAOImpl 对象实例-->
<bean id="u" class="com.deciphering.dao.impl.UserDAOImpl">
</bean>
<!-- 注册一个 UserServiceImpl 对象实例-->
<bean id="userService" class="com.deciphering.dao.service.UserServiceImpl">
<!-- 将UserDAOImpl u 对象实例 注入到 UserServiceImpl 中的userDAO -->
<property name="userDAO">
<ref bean="u">
</property>
</bean>
</beans>
创建测试Junit 用例类 UserServiceTest:
public class UserServiceTest
{
@Test
public void testAdd() throw Exception
{
ApplicationContext ctx =
new ClassPathXmlApplicationContext("beans.xml");
UserServiceImpl service = (UserServiceImpl) stx.getBean("userService");
User u = new User();
u.setUsername("测试用户");
u.setPassword("123456");
service.add(u);
}
}
2.构造方式 注入
修改UserServiceImpl.java 增加构造方法
public class UserServiceImpl implements UserService
{
private UserDAO userDAO;
public UserServiceImpl(UserDAO userDAO)
{
super();
this.UserDAO = UserDAO;
}
public void add(User user)
{
userDAO.save(user);
}
public UserDAO getUserDAO()
{
return this.userDAO
}
public void setUserDAO(UserDAO userDAO)
{
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" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <!-- 注册一个 UserDAOImpl 对象实例--> <bean id="u" class="com.deciphering.dao.impl.UserDAOImpl"> </bean> <!-- 注册一个 UserServiceImpl 对象实例--> <bean id="userService" class="com.deciphering.dao.service.UserServiceImpl"> <!-- 构造方式 将UserDAOImpl u 对象实例 注入到 UserServiceImpl 中的userDAO --> <constructor-arg> <ref bean="u"> </constructor-arg> </bean> </beans>
3.接口注入,我们需要特定的接口交给特定的类去注入,这种方式,带来污染,不能完全解耦。现在已被抛弃
相关文章推荐
- Spring IOC三种注入方式比较
- Spring的三种注入方式
- Spring依赖注入的三种方式
- Spring IOC三种注入方式(接口注入、setter注入、构造器注入)(摘抄)
- Spring的三种注入方式都是什么?如何选用?
- Spring的三种注入方式
- Spring IOC三种注入方式比较
- Spring依赖注入的三种方式
- Spring依赖注入的三种方式
- spring的三种注入方式:
- Spring中注入的三种方式
- Spring的三种注入方式?
- spring Ioc 依赖注入的三种方式:构造函数注入、setter方法注入和接口注入
- Spring中接口注入的三种方式
- spring的三种注入方式
- Spring中注入的三种方式
- Spring的注入方式(三种)
- Spring的注入方式(三种)
- Spring中接口注入的三种方式
- Spring 三种注入方式