zoukankan      html  css  js  c++  java
  • [Java] Spring 3.0 Annotation 入门 @Autowired 默认按类型 by type , @Qualifier byName

    11, Annotation
    @(1), 普通 java 文件 中 @overvide 编译期间
    Annotation-based container configuration
        ---------------------------------------------------------------------------------------
        (The implicitly registered post-processors include 
             AutowiredAnnotationBeanPostProcessor, CommonAnnotationBeanPostProcessor, 
     PersistenceAnnotationBeanPostProcessor, RequiredAnnotationBeanPostProcessor.)

    ----------------------------------------------------------------------------------------
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 这个文件相当于当前 xml 文件的命名空间
    xmlns = xml namespace      xmlns:context="http://www.springframework.org/schema/context" 命名空间
         代表这个xml文件,以context开头的对应的东西到哪里找。
         对应的能够写的内容context="http://www.springframework.org/schema/context" 到哪里去找

      @2, xsd 文件 是元数据, 一般称之为 xml 的语法。 

    12, JSR-250
        JCP (google网址) 指定 java 的新标准
    annotation 开发效率高

    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:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-3.0.xsd">
               
        <context:annotation-config/>
        
             
    	<bean name="u" class="com.bjsxt.dao.impl.UserDAOImpl">
    	</bean>
    	
    	<bean id="userService" class="com.bjsxt.service.UserService">
    	
    	</bean>
    </beans>
    UserService.java
    package com.bjsxt.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    import com.bjsxt.dao.UserDAO; // 抽象出的数据库管理层 
    import com.bjsxt.dao.impl.UserDAOImpl;
    import com.bjsxt.model.User;
    
    public class UserService { // 业务逻辑, 还可以设计权限, 抽象出一层 : 用户服务层, 用户管理层
        private UserDAO userDAO;
    
        public void  init() { /* service 初始化之前执行的方法  */
            System.out.println("init");
        }
        
        public UserDAO getUserDAO() {
            return userDAO;
        }
        @Autowired   // 会从容器帮你找一个和你对应类型的 userDAO 的那么一个 bean 给你注入进来.   其实默认是  byType
        public void setUserDAO(UserDAO userDAO) {
            this.userDAO = userDAO;
        }
    
        public void add(User u) {
            this.userDAO.save(u); // 添加用户会将用户添加到 DB 中。
        }
        
        public void  destroy() { /* service 结束,容器关闭后执行的方法 */
            System.out.println("destroy");
        }
    
    }
    
    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;
    
    public class UserServiceTest {
    
        @Test
        public void testAdd() throws Exception {
            
            ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
            
            UserService service = (UserService) ctx.getBean("userService"); // new UserService();
            
            service.add(new User());
            
            ctx.destroy();
        }
    }
    

    -------------知识点   @Qualifier  --------

    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:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-3.0.xsd">
               
        <context:annotation-config/>
        
             
    	<bean name="u" class="com.bjsxt.dao.impl.UserDAOImpl">
    	</bean>
    	<bean name="u2" class="com.bjsxt.dao.impl.UserDAOImpl">
    	</bean>
    	
    	<bean id="userService" class="com.bjsxt.service.UserService">
    	
    	</bean>
    </beans>
    UserService.java
    package com.bjsxt.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    
    import com.bjsxt.dao.UserDAO; // 抽象出的数据库管理层 
    import com.bjsxt.dao.impl.UserDAOImpl;
    import com.bjsxt.model.User;
    
    public class UserService { // 业务逻辑, 还可以设计权限, 抽象出一层 : 用户服务层, 用户管理层
        private UserDAO userDAO;
    
        public void  init() { /* service 初始化之前执行的方法  */
            System.out.println("init");
        }
        
        public UserDAO getUserDAO() {
            return userDAO;
        }
        @Autowired   // 会从容器帮你找一个和你对应类型的 userDAO 的那么一个 bean 给你注入进来.   其实默认是  byType
        public void setUserDAO(@Qualifier("u") UserDAO userDAO) {
            this.userDAO = userDAO;
        }
    
        public void add(User u) {
            this.userDAO.save(u); // 添加用户会将用户添加到 DB 中。
        }
        
        public void  destroy() { /* service 结束,容器关闭后执行的方法 */
            System.out.println("destroy");
        }
    
    }

    @Required 类似于 @override 在编译期间检查,在配置文件中,是否给我注入了。

      
  • 相关阅读:
    494. Target Sum 添加标点符号求和
    636. Exclusive Time of Functions 进程的执行时间
    714. Best Time to Buy and Sell Stock with Transaction Fee有交易费的买卖股票
    377. Combination Sum IV 返回符合目标和的组数
    325. Maximum Size Subarray Sum Equals k 和等于k的最长子数组
    275. H-Index II 递增排序后的论文引用量
    274. H-Index论文引用量
    RabbitMQ学习之HelloWorld(1)
    java之struts2的数据处理
    java之struts2的action的创建方式
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786830.html
Copyright © 2011-2022 走看看