上文系统的介绍了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注解的区别
不同点
-
@Autowired是spring专有注解,@Resource是java中JSR250中的规范,@Inject是java中JSR330中的规范
-
@Autowired支持参数required=false,@Resource,@Inject都不支持
-
@Autowired,和@Inject支持@Primary注解优先注入,@Resource不支持
-
@Autowired通过@Qualifier指定注入特定bean,@Resource可以通过参数name指定注入bean,@Inject需要@Named注解指定注入bean
相同点
三种注解都可以实现bean的注入
以上是今天文章的所有内容,欢迎大家吐槽
推荐阅读
深入理解spring生命周期与BeanPostProcessor的实现原理
更多优质文章请关注以下公众号查阅:
相关推荐
主要介绍了详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
injectdll远程线程注入
Dll注入 InjectDLL 一个把DLL注入到其它进程的程序
工作需要,前段时间网上找到的关于进程注入参考文档,分享一下
exe将dll注入到explorer.exe资源管理器进程_DLL注入示例.zip
JBeic-Annotation-Inject依赖注入主要有两个好处: (1) 解耦,将依赖之间解耦。 (2) 方便做单元测试。 (3) 依赖的类无需实现对依赖的类实例化(不需要构造函数和公有方法对依赖的类注入对象)。 3、主要 API...
官网上说provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。 provide: Object | () => Object(一个对象或返回一个对象的函数) inject...
vue 依赖注入 :跨组件通讯Provide与inject
注入记录器这是 glassfish 或 jboss 注入记录器。 @Inject 记录器记录器;
InjectDLL代码 实现远程线程注入.zip
Location IOS13.4驱动版本,包含inject.dmg和inject.dmg.signature两个文件
安卓Android源码——Inject增加sqlite3数据库映射注解(ORM).zip
Android 开发使用的inject注解查找控件实例
NULL 博文链接:https://gevin.iteye.com/blog/1131500
VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码...
AndroidInject 是 Android 注解框架,以简化 Android 开发 目前完成的注解(持续增加中): @AINoTitle: 类注解, 只适用于Activity(需继承于AIActivity), 设置Activity不显示Title @AIFullScreen: 类注解...
Web Application Security: A Survey of Prevention Techniques Against SQL Injection1 web安全,sql 注入方面的资料文档,E文。
Spring下描述依赖关系@Resource, @Autowired和@Inject的区别与联系 Spring中BeanFactory和ApplicationContext的区别 谈谈Spring IOC的理解,原理与实现? bean的生命周期,详细看上面 SpringBoot自动装配的过程的原理...
dll注入示例,c++编写,仅供学习参考
Location IOS13驱动版本,包含inject.dmg和inject.dmg.signature两个文件