Spring 三种注入方式

来源:互联网 发布:淘宝店怎么开 编辑:程序博客网 时间:2024/05/19 17:59

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.接口注入,我们需要特定的接口交给特定的类去注入,这种方式,带来污染,不能完全解耦。现在已被抛弃


原创粉丝点击