在一般的开发模式中,我们基本是这样的:

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修饰的成员变量是不能够被修改的,

从句话可以看出,他这样做的目的是为了防止我们注入进来的成员变量被修改。