@Autowired详解 及和 @Resource 的区别

@Autowired

  1. 默认优先按照类型去容器中找对应的组件

  2. 如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找

  3. @Autowired 配合@Qualifier使用:按照组件的指定的id注入
    如下: 表示在容器寻找id为 studentService 实例 注入

      @Qualifier("studentService")
        @Autowired
        private StudentService studentService;
    
  4. 在使用@Autowired 进行自动装配的时候,如果装配的组件 有@Primary注解,那么会自动优先装配有@Primary的组件,

    如:在使用@Autowired注入StudentService 的时候,会优先注入下图的这个组件(当有多个类型是StudentService存在的时候)
    在这里插入图片描述

@Autowired其他用法

@Autowired注解可以使用在构造器,参数,方法,属性上,都是从容器中获取参数组件的值

  1. [标注在方法位置]:

    -@Bean+方法参数;参数从容器中获取;默认不写@Autowired效果是一样的,都能自动装配。 如下:容器创建StudentController 会默认自动注入studentService

    	 @Bean
        public StudentController studentController(StudentService studentService) {
            return new StudentController();
        }
    
        @Bean
        public StudentService studentService() {
            return new StudentService();
        }
    
  2. [标在构造器上]:如果组件只有一个有参构造器,这个有参构造器的@Autowired可以省略,参数位置的组件还是可以自动从容器中获取

@Resource

  1. @Resource(JSR250) 是 java规范的注解

  2. @Resource可以和@Autowired一样实现自动装配功能;默认是按照组件名称进行装配的
    进入注入的时候,可以指定组件的名称,如果组件如:

     	@Resource(name="studentService02")
        private StudentService studentService;
    
  3. 在使用@Resource进入注入的时候,如果该类型的组件只有一个实例,那么可以不用指定名称,如果该组件的实例有多个,那么需要指定注入的组件的名称

  4. @Resource注解 没有能支持@Primary功能没有支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值