为什么@Resource 注解能解决部分@Autowired 注解报错的情况?

我在一通搜索之后发现了这篇文章https://www.cnblogs.com/ywsheng/p/14970946.html,我在此启发下结合自己的见解总结如下:

1、@Resource注解在javax.annotation.Resource包中,不是有Spring提供的注解,但是Spring支持该注解的导入。

2、@Autowired注解由Spring提供,其存在默认值 required = true ,所以必须要有一个不为NULL的对象,当IDEA检测不到对象时就会报错,而此时如果改用@Resource注解则会报错消失,但是我目前并不清楚这样的替换有没有什么隐患。于此操作类似的 就是将@Autowired注解的required 设置为false。

3、@Autowird注解默认通过byType方式注入,而@Resource注解则是通过byName方式注入

4、例如:在使用 @Autowired 注解导入 Mapper 对象报错,可能正是因为 @Autowired 需要一个非 NULL 的对象,而被 @Mapper 修饰的类为 MyBatis 的注解,IDEA 并不能很好的识别其为非 NULL 对象,因此就会报错。所以采用替换为@Resource的注解能方便的解决这个问题。

你可能感兴趣的:(spring)