首页  

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线程堆栈