最后
面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?
掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。
业务代码,不加注释,单文件长度超过2000行的比比皆是。注入的属性能达到十几个之多。这部分注入代码真是脏乱差。
不仅如此,这些字段,还会在IDE里变成灰色,告诉你未被初始化,代码变成了丑八怪。
事实上,Spring从4.0开始, 就 不 推 荐 使 用 属 性 注 入 模 式 了 ,原因是它可以让我们忽略掉一些代码可能变坏的隐患。你可以自行搜索这个问题,我们也不展开说了。
既然Spring推荐使用显示的Setter和构造器方式,那我们就切换一下实现方案。
Setter方法基本上用的人比较少,因为它更加臭更加长。要是给每一个属性写一个set方法,我估计你即使用代码生成器也玩吐了。
构造器注入
那么,构造器的方法就成了我们的首选。
样例代码如下:
public class GoodsServiceImpl implements GoodsSrv {
private GoodsRepo goodsRepo;
private TagRepo tagRepo;
private TagRefRepo tagRefRepo;
private BrandRepo brandRepo;
private UnitRepo unitRepo;
public GoodsServiceImpl(
GoodsRepo goodsRepo,
TagRepo tagRepo,
TagRefRepo tagRefRepo,
BrandRepo brandRepo,
UnitRepo unitRepo) {
this.goodsRepo = goodsRepo;
this.tagRefRepo = tagRefRepo;
this.tagRefRepo = tagRefRepo;
this.brandRepo = brandRepo;
this.unitRepo = unitRepo;
this.tagRepo = tagRepo;
}
}
复制代码
Spring不需要加入其他注解,就可以使用构造器完成注入。问题是,我们依然要写很多代码。
这个时候,你可能想到了Lombok的AllArgsConstructor
注解。但它是针对于全部的属性的,如果类中有一些非Bean的属性,Spring就会晕菜。
这个时候,就可以使用RequiredArgsConstructor
了。
代码如下。
@Service
@RequiredArgsConstructor
public class GoodsServiceImpl implements GoodsSrv {
final GoodsRepo goodsRepo;
final TagRepo tagRepo;
final TagRefRepo tagRefRepo;
final BrandRepo brandRepo;
final UnitRepo unitRepo;
}
复制代码
我们把需要注入的属性,修改成final
类型的(或者使用@NotNull注解,不推荐),这些属性将构成默认的构造器。Java要求final类型的属性必须要初始化,如果没有构造方法代码就会变红。
我们可以看到修改之后的IDE,恼人的灰色提示也消失了。
这样的代码,是非常简洁的。
更高级一点
RequiredArgsConstructor注解,你还可以像下面这样写。即使是把@__
换成@_
,或者换成@___
,也是能正常的运行。
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
复制代码
它的意思是,给使用Lombok生成的构造器方法,加入一个@Autowired
注解。这是彻头彻尾的Lombok语法,不过现在的Spring已经不需要加入这样的注解就能运行了。
总结
在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。
QIFNjf-1714966621102)]