两分钟学会自动注入@Resource和@Inject注解_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 两分钟学会自动注入@Resource和@Inject注解

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

 2018/5/20 12:11:44  知了ing  程序员俱乐部  我要评论(0)
  • 摘要:上文系统的介绍了spring自动装配@Autowired注解的使用,没有查看的可以点击查看,@Autowired注解大家使用过,那今天的两个自动注入可能就不是每个同学都有使用过,不信你看今天将从以下几方面来学习一下@Resource和@Inject注解:@Resource注解的使用演示@Inject注解的使用演示@Resource和@Inject注解与@Autowired注解的区别1,@Resource注解的使用演示把上文中的例子注入修改如下://@Qualifier
  • 标签:注解

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

?

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

    class="list-paddingleft-2" style="">
  • @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偷懒必看资料全集

?

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

?

上一篇: 一分钟学会spring注解之@Autowired注解(二) 下一篇: 没有下一篇了!
发表评论
用户名: 匿名