[Java] Spring3.0 setter 注入 / 留印象构造方法注入 7、8、9.avi

7, Spring 的两大核心 : (1) IOC  (2) AOP
8, Spring 介绍 。 读 Spring API
    问 :spring3.1 这个 spring.jar 怎么不在 dist 文件夹里,是不是还要额外下载jar包?
    答 :spring3.0以上已经没有提供完整的spring包了,按功能模块被分解成了,实际开发时,选择你需要的包即可,core,beans,context,
        在使用web开发中一般都需要被加入,如果你实际应用使用了aop等,这些包也要被加入。
9, // dependency injection - 依赖注入   示例程序中, UserService, DAO 都依赖于 容器的 注入
     /* inversion of control 什么是控制反转? 
    (1), Service 成员 userDAO  控制在容器手里了,不用自己new实现。反转到容器那里去了!
(2), 原来编程控制的是实现,现在是接口,是抽象, 反转到抽象
         (3), 你控制的是接口,而不是整个实现了!原来控制在自己手里,现在控制在别人的容器手里了。 “控制反转”
*/

  @(1), 指定 XML, catalog 书写规范与提示  Spring_09 自动提示 马士兵.avi
 注入类型
Spring_0300_IOC_Injection_Type
setter(重要)

构造方法(可以忘记)
接口注入(可以忘记)

  @(2), 以上讲解的都是 setter 注入

UserService.java

package com.bjsxt.service;

import com.bjsxt.dao.UserDAO; // 抽象出的数据库管理层 
import com.bjsxt.dao.impl.UserDAOImpl;
import com.bjsxt.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); // 添加用户会将用户添加到 DB 中。
    }
    /*
     * public UserService(UserDAO userDAO) { super(); this.userDAO = userDAO; }
     */
}
UserServiceTest.java
package com.bjsxt.service;

import static org.junit.Assert.*;

import org.junit.Test;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;

// dependency injection - 依赖注入   示例程序中, UserService, DAO 都依赖于 容器的 注入
// inversion of control 什么是控制反转? Service 成员 userDAO  控制在容器手里了,不用自己new实现。反转到容器那里去了!原来编程控制的是实现,现在是接口是抽象,反转到抽象
//   你控制的是接口,而不是整个实现了!原来控制在自己手里,现在控制在别人的容器手里了。 “控制反转”。
public class UserServiceTest {

    @Test
    public void testAdd() throws Exception {
        
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        
        UserService service = (UserService) ctx.getBean("userService"); // new
                                                                            // UserService();
        User u = new User();
        u.setUsername("zhangsan");
        u.setPassword("zhangsan");
        service.add(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-3.1.xsd">

    <bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl">
        <!-- collaborators and configuration for this bean go here -->
    </bean>
    
    <bean id="userService" class="com.bjsxt.service.UserService">
        <property name="userDAO" ref="u"/>
    </bean>

    <!-- more bean definitions go here -->

</beans>

构造方法注入

UserService.java
package com.bjsxt.service;

import com.bjsxt.dao.UserDAO; // 抽象出的数据库管理层 
import com.bjsxt.dao.impl.UserDAOImpl;
import com.bjsxt.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); // 添加用户会将用户添加到 DB 中。
    }

    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-3.1.xsd">

	<bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl">
		<!-- collaborators and configuration for this bean go here -->
	</bean>
	
	<bean id="userService" class="com.bjsxt.service.UserService">
		<!--   <property name="userDAO" ref="u"/>  -->
		<constructor-arg>
			<ref bean="u"/>
		</constructor-arg>
	</bean>

	<!-- more bean definitions go here -->

</beans>



posted @ 2014-01-12 11:36  小尼人00  阅读(226)  评论(0编辑  收藏  举报