为什么可以使用@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 特定的警告,例如关于字段注入的警告

相关内容

热门资讯

突发!天天贵阳app修改器,天... 突发!天天贵阳app修改器,天天海南家园辅助(原来有挂插件)-哔哩哔哩进入游戏-大厅左侧-新手福利-...
据权威媒体报道!随意玩辅助器透... 据权威媒体报道!随意玩辅助器透视挂,新西部外卦辅助器(果然真的有挂)-哔哩哔哩;1、随意玩辅助器透视...
此事迅速冲上热搜!微乐自建房脚... 此事迅速冲上热搜!微乐自建房脚本免费下载,欢聚水鱼智能辅助教程(本来是真的脚本)-哔哩哔哩微乐自建房...
昨日!心悦俱乐部游戏辅助,欢乐... 昨日!心悦俱乐部游戏辅助,欢乐达人破解器(其实是有脚本)-哔哩哔哩1、下载好心悦俱乐部游戏辅助透视辅...
现就发布提示!广西友乐解码器辅... 现就发布提示!广西友乐解码器辅助器,圣游牛牛辅助器(果然有挂修改器)-哔哩哔哩1、玩家可以在广西友乐...
据相关数据显示!边锋辅助脚本,... 据相关数据显示!边锋辅助脚本,决战卡五星游戏辅助器(果然是真的脚本)-哔哩哔哩亲,关键说明,决战卡五...
连日来!微信小程序多乐辅助器免... 连日来!微信小程序多乐辅助器免费下载,人海大厅挂件怎么买(切实真的有修改器)-哔哩哔哩一、微信小程序...
最新消息!潮汕汇游戏辅助,湖北... 最新消息!潮汕汇游戏辅助,湖北逍遥辅助(都是真的有下载)-哔哩哔哩1、超多福利:超高返利,海量正版游...
经核实!广丰510k辅助,心悦... 经核实!广丰510k辅助,心悦游戏辅助(好像是有插件)-哔哩哔哩一、心悦游戏辅助可以开透视的定义与意...
经核实!南通长牌有挂吗,蜀山辅... 经核实!南通长牌有挂吗,蜀山辅助工具(确实真的是有脚本)-哔哩哔哩进入游戏-大厅左侧-新手福利-激活...