@Autowired正确的打开方式

博客讨论了在Spring中使用@Autowired注解时遇到的警告问题,推荐使用构造函数注入以确保依赖加载顺序。通过示例说明了直接在成员变量上使用@Autowired可能导致的问题,指出使用构造函数注入可以确保成员变量初始化的顺序。同时,文章提到了使用final关键字的原因,即保证bean的不变性和避免重复加载。对于有代码洁癖的开发者,考虑使用@Resource注解作为替代方案。
摘要由CSDN通过智能技术生成

使用@Autowired注解时,发现IDEA报了一个 warning,拥有强迫症的我怎么受得了这个。

 Spring Team recommends “Always use constructor based dependency 
injection in your beans. Always use assertions for mandatory dependencies”.

使用alt+enter代码改成这样了

这个两种方式有区别吗?@Autowired 可以对成员变量、方法以及构造方法三种方式操作。原来的写法也没错啊。

为什么要使用构造函数的方式注入参数

看下这个例子

@Autowired
private User user;
private String school;
public UserAccountServiceImpl(){
   this.school = user.getSchool();
}

这个是不会执行成功的

改成这样就可以成功了

private User user;
private String school;

@Autowired
public UserAccountServiceImpl(User user){
    this.user = user;
    this.school = user.getSchool();
}

Java变量的初始化顺序为:静态变量或静态语句块–>实例变量或初始化语句块–>构造方法

使用构造方法注入,可以明确成员变量的加载顺序。

为什么要使用final

spring配置的bean不会发生变化也不需要重复加载。

毕竟这样写代码的人毕竟是少数,这样改增加代码的复杂度,需不需要这样改仁者见仁智者见智。

对于有强迫症的程序员来说,可能改成@Resource注解是一个比较委婉的解决方式吧。

参考:

@Autowired和构造方法执行的顺序解析_目尽地平线的博客-CSDN博客_autowired 构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值