您的位置:首页 > 编程语言 > Java开发

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修改
<?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.接口注入,我们需要特定的接口交给特定的类去注入,这种方式,带来污染,不能完全解耦。现在已被抛弃
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: