• Spring框架中Bean管理的常用注解


    1. @Component:组件.(作用在类上)可以作用在任何一个类上
    
    2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)
        * @Controller       -- 作用在WEB层(同样可以使用@Component,因为@Controller是@Component的细化。下面两个组件同)
        * @Service          -- 作用在业务层
        * @Repository       -- 作用在持久层
    
        * 说明:这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强
    
    3. 属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)
        * 如果是注入的普通类型,可以使用value注解
            * @Value            -- 用于注入普通类型   
    @Component(value="userService")
    public class UserServiceImpl implements UserService{
        @Value(value="jack")
        private String name;
        public void sayHello(){
            System.out.println("say spring"+name);
        }
    }
      这样name便被赋予了jack的值。
        * 如果注入的是对象类型,使用如下注解
            * @Autowired        -- 默认按类型进行自动装配
    (1)创建Dao层对象UserDao。这里一定要注意的是:UserDao中也应该加入组件,因为配置文件根据注解去扫描各个文件,如果扫描到就为其创建对象。
    package com.huida.demo1;
    
    import org.springframework.stereotype.Repository;
    
    @Repository(value="userDao")//(一定要加上)
    public class UserDao {
    
        public void save(){
            System.out.println("保存用户");
        }
    }
    (2)在UserServiceImpl实现方法中,引入自定义对象userDao:
    这里定义的对象名与Dao层声明的名称不同,那又是如何进行匹配的呢?@Authowired是按照类型进行匹配的,这里定义的dao的类型为UserDao,就去扫描UserDao然后为其创建对象进行匹配。
    @Component(value="userService")
    public class UserServiceImpl implements UserService{
        @Value(value="jack")
        private String name;
        
        //按照类型自动装配,按照类型进行匹配。
        @Autowired
        private UserDao dao;
        public void sayHello(){
            System.out.println("say spring"+name);
            dao.save();
        }
    }
        
            * 如果想按名称注入
                * @Qualifier    -- 强制使用名称注入
    如果按照名称注入的话,value中的值应该与Dao层对象声明的名称一样才可以匹配成功
    @Component(value="userService")
    public class UserServiceImpl implements UserService{
        @Value(value="jack")
        private String name;
    
        @Qualifier(value="userDao")//按名称注入,value中的值应该与Dao层组件写的名称一样
    */    
        private UserDao dao;
        public void sayHello(){
            System.out.println("say spring"+name);
            dao.save();
        }
    }
        * @Resource             -- 相当于@Autowired和@Qualifier一起使用
            * 强调:Java提供的注解
            * 属性使用name属性
    @Component(value="userService")
    public class UserServiceImpl implements UserService{
        @Value(value="jack")
        private String name;
        @Resource(name="userDao")
        private UserDao dao;
        
        public void sayHello(){
            System.out.println("say spring"+name);
            dao.save();
        }
    }

    不管是哪种方法,执行结果都一样,执行结果为:

     
  • 相关阅读:
    vim的分屏功能
    vim进阶
    VIM常用快捷键
    vim操作:打开多个文件、同时显示多个文件、在文件之间切换
    vim 如何复制文件中多行到另一个文件
    无限分类左右值算法的常规操作逻辑
    js查看Object对象的内容
    js获取当前页面的url信息
    javascript获取url中的参数值
    解决Eclipe安装不上android的ADT的办法
  • 原文地址:https://www.cnblogs.com/wyhluckdog/p/10128310.html
Copyright © 2020-2023  润新知