zoukankan      html  css  js  c++  java
  • [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>



  • 相关阅读:
    Spring MVC 入门示例讲解
    使用Word2013,发布博文到博客园
    走过2103,迈向2014
    C#中的字符串拼接@,$
    ORA-22922:nonexistent LOB value问题及listagg()函数
    证明一个数是不是存在于该数组中
    论java中System.arrayCopy()与Arrays.copyOf()的区别
    JSP中获取各种路径的方法
    JavaScript中变量声明有var和没var的区别
    JavaScript:理解事件循环
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786832.html
Copyright © 2011-2022 走看看