zoukankan      html  css  js  c++  java
  • Spring

    1. 介绍

    之前我们写的bean都是基于xml配置,而这文章是基于java 注解去实现创建bean,首先我们需要在之前的xml当中添加两个dtd

    xmlns:context 和 xsi:schemaLocation

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans   xmlns="http://www.springframework.org/schema/beans" 
             xmlns:context="http://www.springframework.org/schema/context"
             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-4.3.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd">
            
         
    </beans>

    2.配置

    只要对你需要添加注解创建bean的包进行扫描就可以了

    <context:component-scan> 其中属性,base-package就写需要扫描的包全限路径即可

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans   xmlns="http://www.springframework.org/schema/beans" 
             xmlns:context="http://www.springframework.org/schema/context"
             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-4.3.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd">
            
        <context:component-scan base-package="com.test.spring.annotation"></context:component-scan>    
         
    </beans>

    3.注解讲解

    • 创建基本bean: @Component, 以下三种类型跟Component一样,只是叫法不一样而已
      • @Service
      • @Controller
      • @Repository

      注入:三种不同的注入方式
      • @Autowired:以类型注入,意思就注入相同类型的实现类,这会有缺点,就会当有多个实现了相同接口的对象,就不知道注入谁了

      • @Autowired+@Qualifier: 就是制定那个实现bean注入

      • @Resource: 已名称注入

      • 第四种是可以在setter方法上使用以上三种注解

    • 设普通值:@Value

    完整类

    @Component("userService")
    public class UserServiceImpl implements UserService{
    
        /**
         * 第一种方式 注入
         */
        @Autowired
        private UserDao userDao_1;
        
        /**
         * 第二种方式 注入
         */
        @Autowired
        @Qualifier("userDao")
        private UserDao userDao_2;
        
        /**
         * 第三种方式 注入
         */
        @Resource("userDao")
        private UserDao userDao_3;
        
        
        private UserDao userDao_4;
        
        /**
         * 第四种方式 注入
         */
        @Autowired
        @Qualifier("userDao")
        public void setUserDao_4(UserDao userDao_4) {
            this.userDao_4 = userDao_4;
        }
        
        /**
         * 基本类型
         */
        @Value("Peter")
        public String name;
        
        public void addUser() {
            userDao_1.saveUser();
            
            userDao_2.saveUser();
            
            userDao_3.saveUser();
            
            userDao_4.saveUser();
        }
    
        public String toString() {
            return name;
        }
    }

     

  • 相关阅读:
    C#如何不使用递归实现无限层次结构的代码分享[转]
    asp.net mvc2 templates的一篇文章
    asp.net mvc Model验证总结及常用正则表达式
    关于IE的Ajax请求结果缓存的问题
    在ASP.NET MVC中如何让ASCX用户控件具有Action / Controller
    Kubernetes之Pod介绍
    Docker 之Swarm介绍
    Docker之多机网络
    Kubernetes之Pod调度
    Docker之隔离技术
  • 原文地址:https://www.cnblogs.com/oscar1987121/p/10879742.html
Copyright © 2011-2022 走看看