Autowired和Resource注解的区别
所属分类 spring
浏览量 1476
@Autowired注解 是 spring 定义的
@Resource 是 JSR-250规范定义的注解 其他的还有 @PostConstruct @PreDestroy
@Resource的作用与@Autowired 一样, @Autowired默认按byType自动注入,@Resource默认按 byName自动注入
@Resource有两个重要属性 name和type,
Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。
@Resource装配顺序
1. 如果同时指定了name和type,则从上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;
2、 @Autowired默认按类型装配
@Autowired(required=false) 允许注入组件为 null
@Autowired
@Qualifier("xxxBean")
private XXXBean yyyBean;
Qualifier 指定 beanName
default-autowire="byName"
自动装配byName
@Primary 可以用于消除歧义 匹配多个bean时,优先使用@Primary注解的bean
推荐使用 @Resource注解在字段上,可以不写setter方法,J2EE自带,减少与spring的耦合。
@Resource 注解 CommonAnnotationBeanPostProcessor 处理
@Autowired注解 由 AutowiredAnnotationBeanPostProcessor 处理
多数据源配置 使用 Autowired 和 Resource 注解的 实例
@Component
public class DBInitBean {
// @Autowired 注意使用 @Qualifier注解 指定 bean name ,否则 默认按byType自动注入 注入第一个匹配的
// @Autowired
// @Qualifier("db1SqlSessionFactory")
// private SqlSessionFactory db1SqlSessionFactory;
// @Autowired
// @Qualifier("db2SqlSessionFactory")
// private SqlSessionFactory db2SqlSessionFactory;
// @Resource 默认按 name 注入
@Resource
private SqlSessionFactory db1SqlSessionFactory;
@Resource
private SqlSessionFactory db2SqlSessionFactory;
https://gitee.com/dyyx/demos/blob/master/springboot-mybatis-mulidatasource/src/main/java/dyyx/db/DBInitBean.java
springboot @Autowired 注解处理要点 >
上一篇
下一篇
教师节最美的诗歌送给最美的你
一个牛逼项目的上线过程
如何防止表单重复提交
springIOC容器相关注解
springboot简单例子
利用shell命令分析java线程堆栈