Autowired和Resource的区别
@Autowired | @Resource |
---|---|
Spring定义的注解 | JDK自带的注解(JSR-250定义的) |
默认按类型自动装配(byType) | 默认按名称自动装配(byName) |
一个参数:required(默认true),表示是否必须注入 | 七个参数:最重要的两个参数是name、type |
默认按类型自动装配,如果要按名称自动装配,需要和@Qualifier一起配合 | 默认按名称自动装配,如果指定了name,则按名称自动装配;如果指定了type,则按类型自动装配 |
支持优先级,@Primary 注解修饰,该候选者会被选中,作为自动装配的 bean | 不支持 |
作用范围:构造器、方法、参数、成员变量、注解 | 作用范围:类、成员变量、方法 |
不知道从什么时候起我的IDEA对@Autowired一直报黄色的波浪线,使用alt + enter查看IDEA给的提示是Field injection is not recommended,上网查了以下发现其实是因为现在推荐使用构造器的方式注入,而不推荐使用成员变量的方式。我以前的处理方式是直接使用@Resource,但是今天才明白@Autowired的功能略微强大一点。支持优先注入、可以配置允许bean不存在;@Resource相比较于@Autowired就是更加通用一点,支持其他框架,但是我现在后端都是在用Spring,也暂时不用考虑其他框架。整体来说我打算继续使用@Autowired(后面如何换框架了当我没说),但是继续使用IDEA又给我报黄色波浪线,看着很烦,本人有很严重的代码洁癖。所以我打算把IDEA的这个警告取消:Settings -> Inspections -> Spring Core -> Non recommended field injections取消勾选就好了
评论