Java spring中的构造函数注入如何促进不变性?

Java spring中的构造函数注入如何促进不变性?,java,spring,Java,Spring,我是spring新手,正在阅读在线spring参考资料。使用构造函数注入(CI)的优点之一是因为CI是不可变的?我知道这意味着它不能被修改。但这是怎么发生的,请举一个简单的例子来说明CI是如何促进不变性的?感谢这是一个不变的bean,感谢CI class B1 { private final int x; B1(int x) { this.x = x; } } context.xml <bean id="b1" class="test.B1"&g

我是spring新手,正在阅读在线spring参考资料。使用构造函数注入(CI)的优点之一是因为CI是不可变的?我知道这意味着它不能被修改。但这是怎么发生的,请举一个简单的例子来说明CI是如何促进不变性的?感谢

这是一个不变的bean,感谢CI

class B1 {
    private final int x;

    B1(int x) {
        this.x = x;
    }
}
context.xml

<bean id="b1" class="test.B1">
    <constructor-arg value="1"/>
</bean>


将初始值传递给构造函数可以使用这些初始值构造对象。然后,您只需使用getter编写对象,而不使用setter(因为您已经通过构造函数设置了状态,所以不需要setter)。好的,非常感谢,因为我们不能在setter注入中使用final属性,我们可以将其与CI一起使用,所以CI是需要对象不可变时使用的注入。