@Autowired和final + 构造函数的区别说明
在一般的开发模式中,我们基本是这样的:
Controller层注入Service层,Service层注入Dao层,通过@Autowired来自动注入.
现在(2022)Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入
private final QdTdhlTools qdTdhlTools;
private final BaseChatMessageService baseChatMessageService;
public BaseChatMessageServiceImpl(QdTdhlTools qdTdhlTools, BaseChatMessageService baseChatMessageService) {
this.qdTdhlTools = qdTdhlTools;
this.baseChatMessageService = baseChatMessageService;
}
官网推荐的原因:
注意:final修饰的成员变量是不能够被修改的,
从句话可以看出,他这样做的目的是为了防止我们注入进来的成员变量被修改。