1、注解注入分析
第一确定,我们为什么需要使用 @Autowired 注解?@Autowired 是一个注释,它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。对 Spring Bean 这块不熟悉的,可以看【Spring 源码分析】这个系列的文章
@RequiredArgsConstructor 是 lombok 提供的注解,作用于类,用于生成包含 final 和 @NonNull 注解的成员变量的构造方法。那么也就是说,我们需要在注入的属性上增加 final 或 @NonNull 修饰就可以了
Spring 中三种注入方式、
第一种:Field Injection:属性注入,这种注入方式通过 Java 的反射机制实现,所以 private 的成员也可以被注入具体的对象

第二种:Constructor Injection 构造注入,通过对象构建的时候建立关系,所以这种方式对对象创建的顺序会有要求,当然 Spring 会为你搞定这样的先后顺序,除非你出现循环依赖,然后就会抛出异常

第三种:Setter Injection set 注入,通过调用成员变量的 set 方法来注入想要使用的依赖对象

2、实例分析
项目中的@Autowired 注解,有黄色提示,根据提示修改代码之后,

鼠标放上去看到提示使用构造方法注入

有两种形式,第一种,直接创建空构造,实际上是将属性修改为 final。第二种,每个属性的注入都在构造方法上增加一个参数,如下

第二种代码太臃肿了,并且很繁琐,所以这里我们使用第一种方式,final 构造,于是代码变成了以下格式

大量使用@RequiredArgsConstructor(onConstructor_ = @Autowired)
后发现启动时间明显快了一半多,
没有使用这个注解前,启动时间如图

使用@RequiredArgsConstructor(onConstructor_ = @Autowired)后

首先发明了new这个关键字,然后再发明一个依赖反转的名词去否定new,搞个bean容器依靠xml配置,然后觉得xml配置麻烦,再发明一个用注解配置的办法,然后又发现有其它缺陷,再发明个构造函数依赖注入,绕了一圈回到原点…..
你这个能解决循环依赖吗
少那么10秒的启动时间,有什么实际的意义呢?脱离了实际业务的需求都是耍流氓
那你就直接new吧
启动速度提升,没必要吧。为了启动快,损失运行时性能就更不合适了。
启动用时在一个合理的时间范围内,多个十来秒也没有什么不能接受的,只要服务接口响应快,必要的高并发要求是无所谓的
要启动那么快干啥
构造函数注入,代码可读性有点差
难道他不是因注解而火的吗?
孔乙己么
这个为什么能提升启动速度,背后原理是什么?
每一个名词我都认识,连起来就不知道在说啥了
Java就是繁琐,net太简洁了
。。。。spring native 直接秒杀花里胡哨
提升了启动速度?理由呢,无非是注入阶段提前了罢了,一个是构造器时机,一个是属性填充时机,
少了好多配置,多了注解。。。
作者全部回复“测试而已,实际项目没有使用过”
歪理
减少@Auto表wired的使用