以前使用spring依赖注入,都是使用Autowired注解。
@RestController
@RequestMapping("alarm/configs")
public class AlarmConfigController {
@Autowired
private AlarmConfigService alarmConfigService;
...
}
但是IDEA会提示你,不推荐使用这种方式依赖注入,原因的话网上有很多:
Field injection is not recommended 依赖注入方式_Aslan___的博客-CSDN博客
下面就是spring推荐的写法:
@RestController
@RequestMapping("alarm/configs")
public class AlarmConfigController {
private final AlarmConfigService alarmConfigService;
@Autowired
public AlarmConfigController(AlarmConfigService alarmConfigService) {
this.alarmConfigService = alarmConfigService;
}
...
}
这种方式,如果注入的类太多的话,看起来很繁琐。而且有几率导致Spring循环依赖问题,所以还是不推荐使用。
Lombok可以简化依赖注入的代码:
@RestController
@RequestMapping("alarm/configs")
@RequiredArgsConstructor
public class AlarmConfigController {
//这里必须是final,若不使用final,用@NotNull注解也是可以的
private final AlarmConfigService alarmConfigService;
...
}
这样写实际上编译后和spring推荐的写法是一样的,但是会更简洁。
原文链接:https://blog.csdn.net/xc_nostalgia/article/details/109668659