15-@Resource注解按名称装配

使用注解方式实现Spring IoC

回到spring导航页

两类自动装配注解

分类注解说明
按类型装配@Autowired按容器内对象类型动态注入属性,由Spring机构提供
@Inject基于JSR-330(Dependency Injection for java)标准,其他同@Autowired,但不支持required属性
按名称装配@Named与@Inject配合使用,JSR-330规范,按属性名自动装配属性
@Resource基于JSR-250规范,优先按名称、再按类型智能匹配

15-@Resource注解按名称装配

@Resource装配规则

  1. @Resource设置name属性,则按name在IoC容器中将bean注入
  2. @Resource未设置name属性
    2.1 以属性名作为bean name在IoC容器中匹配bean,如有匹配则注入
    2.2 按属性名未匹配,则按类型进行匹配,同@Autowired,需加入@Primary解决类型冲突

    使用建议
    在使用@Resource对象时推荐设置name或保证属性名与bean名称一致
package com.torey.spring.ioc.service;

import com.torey.spring.ioc.dao.IUserDao;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @Author http://torey611.gitee.io/li-tao-feng/
 * @Email torey6061@qq.com
 * @Date 2021/5/1 7:27
 * @描述:
 */
@Service
public class DepartmentService {
    /**
     * 1. @Resource设置name属性,则按name在IoC容器中将bean注入
     * 2. @Resource未设置name属性
     * 2.1 以属性名作为bean name在IoC容器中匹配bean,如有匹配则注入
     * 2.2 按属性名未匹配,则按类型进行匹配,同@Autowired,需加入@Primary解决类型冲突
     * 使用建议:在使用@Resource对象时推荐设置name或保证属性名与bean名称一致
     */

//    @Resource
//    private IUserDao userDao;
//    @Resource
//    private IUserDao userOracleDao;

    @Resource(name = "userOracleDao")
    private IUserDao userDao;

    public void getById(Long id){
        System.out.println(this.getClass().getName() + ".getById()");
        userDao.getById(id);
    }
}

按属性注入时,字段是private,是如何赋值的

    @Resource(name = "userOracleDao")
    private IUserDao userDao;
或者
@Autowired
    private IUserDao userDao;

答:IoC反射给属性赋值时,会先将private修改成public,赋值完毕后,再public将修改成private

导航,上一页,下一页

14自动装配与Autowired

16Resource和Autowired注解的区别

支持我-微信扫一扫-加入微信公众号

Aseven公众号

赞赏作者

赞赏作者
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值