一.前言
再使用springboot自动注入
@Autowired
注解时,下方会出现波浪线警告
,这是什么原因呢?我们细看提示说明已经说的很清楚了,Field injection is not recommended
“不建议使用字段注入”,字段注入是指通过直接将依赖项注入到类的字段中来实现依赖注入。这种方式存在一些问题,比如降低了代码的可测试性,增加了类之间的耦合度,使得依赖关系不够清晰等。相比之下,构造函数注入
或者方法注入
是更好的选择。构造函数注入是指通过类的构造函数来接收依赖项,而方法注入则是通过方法参数来传递依赖项。
二.解决方案
2.1 示例代码
@Service
public class CartServiceImpl extends ServiceImpl<CartMapper, Cart> implements ICartService {
@Autowired
private RestTemplate restTemplate;
}
可以看到代码给出警告提示
2.2 解决方案
在类上添加
@RequiredArgsConstructor
注解,@RequiredArgsConstructor 是 Lombok 提供的一种注解,它能够为被标记的类自动生成一个包含所有非静态字段
的构造函数。该注解适用于不可变对象
(Immutable Object)的构建,能够简化代码并提高开发效率。
代码改造:
@Service
@RequiredArgsConstructor
public class CartServiceImpl extends ServiceImpl<CartMapper, Cart> implements ICartService {
private final RestTemplate restTemplate;
}
注意:被 @RequiredArgsConstructor 注解标记的字段必须使用 final 关键字进行声明,以确保生成的构造函数能够正确地初始化这些字段,如果自定义变量不想出现在构造方法中只要不加final关键字即可
可以看到警告被完美解决