控制器应该是不可变的吗?

时间:2017-04-06 21:09:54

标签: java

我已经知道什么是不可变的以及它是如何工作的,但大多数理论都适用于对象。

是否值得拥有一个不可变的控制器?

如果我的控制器是这样的话

public class MyController {

    private MyService myService;

    public void doSomething(){
       myService.something();
    }

    public void setMyservice(final MyService myservice){
       this.myservice = myservice
    }
}

假设MyService是"不可变的" ,是否值得让我的控制器"不变的"通过removeint setter并只用构造函数初始化它?

有人可以告诉我为什么要这样做吗?

1 个答案:

答案 0 :(得分:0)

是的,值得让你的Spring bean不可变,你应该这样做。

Spring docs包含以下几个原因:

  

Spring团队通常提倡构造函数注入,因为它使应用程序组件能够实现为不可变对象,并确保所需的依赖项不为空。此外,构造函数注入的组件总是以完全初始化的状态返回到客户端(调用)代码。