为什么可以使用@Resource,但不推荐使用@Autowired
创始人
2024-11-12 11:06:30
0

DI注入的三种方式
1、属性注入
属性注入应该是我们用的最多的一种,即通过@Autowired注解,该注解默认是按照ByType方式(按类型)注入Bean,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false)。示例代码:

@Service public class UserService {     private static User user;     // 1. Filed Injection 属性注入     @Autowired     private PlayService playService; } 

2、setter 方法注入
setter方式也会用到@Autowired注解,不过是用在成员属性的set方法上

// 2. Setter Injection setter注入 private PlayService playService; @Autowired public void setPlayService(PlayService playService) {     this.playService = playService; } 

3、构造器注入
构造器注入,则是把需要注入的对象,通过构造器来进行初始化

 	private PlayService playService; 		UserService(PlayService playService) {    		 this.playService = playService; } 
 @Component   public interface PlayService {       void play();   }    @Component   @Slf4j   public class Mp3Player implements PlayService {        @Override       public void play() {           log.info("Mp3Player play()");       }   }    @Component   @Slf4j   public class Mp4Player implements PlayService {        @Override       public void play() {           log.info("Mp4Player play()");       }   } 

区别:
1、@Resource是Java的标准注解,定义在javax.annotation.Resource包中,主要用于EJB 组件的依赖注入,但在Spring中也可以用于bean的注入。
2、@Autowired 是 Spring 框架提供的注解,定义在org.springframework.beans.factory.annotation.Autowired 包中,专门用于 Spring 环境下的依赖注入。
3、@Resource 默认按照名称进行注入,如果找不到匹配名称的 bean,则退而求其次按照类型进行注入。可以通过 name 属性指定 bean 名称,或者通过 lookup 属性指定查找方法。
4、@Autowired 默认按照类型进行注入,如果类型匹配的 bean 多于一个,则会抛出异常,除非指定了具体的 bean 名称。可以通过 required 属性来控制是否必须找到匹配的 bean。
5、IDEA推荐@Resource
(1)@Resource 是 Java 标准的一部分,因此可能被视为更通用的解决方案
(2)使用 @Resource 可以避免 Spring 的特定依赖,使得代码看起来与 Spring 解耦。 IDEA 的推荐也可能基于减少 Spring 特定的警告,例如关于字段注入的警告

相关内容

热门资讯

玩家科普!宁波游戏大厅打地鼠有... 玩家科普!宁波游戏大厅打地鼠有没有挂,春天扑克的确是有挂的,AI教程(有挂辅助)小薇(透视辅助)致您...
玩家实测!荔枝竞技俱乐部挂真的... 玩家实测!荔枝竞技俱乐部挂真的假的,闲逸斗地主亲友圈好像真的有挂,2025新版教程(有挂介绍)1、游...
必备辅助推荐!微友麻将输赢规律... 必备辅助推荐!微友麻将输赢规律,全民如意棋牌一般真的有挂,第三方教程(有挂解密);1、玩家可以在微友...
玩家必备教程!!云来台州麻将游... 玩家必备教程!!云来台州麻将游戏有胜率吗,湖北休闲总是真的有挂,分享教程(有挂细节)1、下载好云来台...
教学盘点!财神13张辅助有教程... 教学盘点!财神13张辅助有教程吗,青龙游戏大厅总是真的有挂,解密教程(有挂解说);财神13张辅助有教...
分享给玩家!白金岛游戏有猫腻吗... 分享给玩家!白金岛游戏有猫腻吗,小闲川南棋牌其实真的有挂,详细教程(有挂攻略)1、这是跨平台的白金岛...
分享给玩家!丽水跑得快有挂吗,... 分享给玩家!丽水跑得快有挂吗,拱趴游戏原来真的有挂,解密教程(有挂黑科技);1.丽水跑得快有挂吗 a...
德州辅助!aapoker发牌规... 德州辅助!aapoker发牌规律,WepOke其实真的有挂,软件透明挂(有挂归纳);是一款可以让一直...
三分钟了解!科乐手机麻将辅牌器... 三分钟了解!科乐手机麻将辅牌器,中至南昌麻将的确是有挂的,解密教程(有挂揭秘)1、上手简单,内置详细...
黑科技辅助挂!微扑克辅助钻石,... 黑科技辅助挂!微扑克辅助钻石,wEpoKe其实真的有挂,软件透明挂(有挂总结)1、很好的工具软件,可...