两分钟学会自动注入@Resource和@Inject注解

5 篇文章 0 订阅

上文系统的介绍了spring自动装配@Autowired注解的使用,没有查看的可以点击查看,@Autowired注解大家使用过,那今天的两个自动注入可能就不是每个同学都有使用过,不信你看

 

今天将从以下几方面来学习一下@Resource和@Inject注解

  • @Resource注解的使用演示

  • @Inject注解的使用演示

  • @Resource和@Inject注解与@Autowired注解的区别

 

 

1,@Resource注解的使用演示

 

把上文中的例子注入修改如下:

 

//    @Qualifier(value="userDao")
//    @Autowired(required=false)
@Resource
private UserDao userDao2;

 

运行测试类结果如下:

 

实例bean为 === UserService [userDao=UserDao [version=2]]

 

让我们@Resource注解中加上一个name参数如下:

 

@Resource(name="userDao")

 

继续运行测试结果如下:

 

实例bean为 === UserService [userDao=UserDao [version=0]]

 

从运行结果我们可以发现:

  • @Resource注解默认根据参数名字寻找bean注入

  • @Resource也可以通过name参数指定需要注入的bean

  • @Resource注解不支持spring的@Primary注解优先注入

 

2,@Inject注解的使用演示

 

在演示@Inject注解前需要先在pom文件中增加如下依赖:

 

<dependency>
           <groupId>javax.inject</groupId>
           <artifactId>javax.inject</artifactId>
           <version>1</version>
</dependency>

 

UserService类UserDao注入修改为如下:

 

@Inject
private UserDao userDao;

 

对应的主配置文件如下:

 

@Primary
@Bean(value = "userDao2")
public UserDao getUserDao(){
       UserDao userDao = new UserDao();
       userDao.setVersion(2);
       return userDao;
}

 

运行测试类结果如下:

 

实例bean为 === UserService [userDao=UserDao [version=2]]

 

UserService类注入代码修改如下:

 

@Named("userDao")
private UserDao userDao;

 

运行测试类结果如下:

 

实例bean为 === UserService [userDao=UserDao [version=0]]

 

从以上运行结果我们可以得出:

  • @Inject注解默认是根据参数名去寻找bean注入

  • @Inject注解支持spring的@Primary注解优先注入

  • @Inject注解可以增加@Named注解指定注入的bean

 

3,@Resource和@Inject注解与@Autowired注解的区别

 

不同点

  1. @Autowired是spring专有注解,@Resource是java中JSR250中的规范,@Inject是java中JSR330中的规范

  2. @Autowired支持参数required=false,@Resource,@Inject都不支持

  3. @Autowired,和@Inject支持@Primary注解优先注入,@Resource不支持

  4. @Autowired通过@Qualifier指定注入特定bean,@Resource可以通过参数name指定注入bean,@Inject需要@Named注解指定注入bean

 

相同点

 

三种注解都可以实现bean的注入

 

以上是今天文章的所有内容,欢迎大家吐槽

 

推荐阅读

 

深入理解spring生命周期与BeanPostProcessor的实现原理

 

250G偷懒必看资料全集

 

更多优质文章请关注以下公众号查阅:

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值