【发布时间】:2015-04-28 07:01:44
【问题描述】:
根据不可变对象的定义 (see this question),我不太确定将 Spring DAO 的设置器作为唯一用途是否是确保不可变性的一种方法。例如(dataSource 属性):
public class MySpringPojoDAO extends JdbcDaoSupport implements IMySpringPojoDAO {
private boolean dataSourceSet = false;
@Override
public void setDataSource(DataSource dataSource){
if (dataSourceSet) {
throw new IllegalStateException("...");
}
dataSourceSet = true;
this.dataSource = dataSource;
}
}
}
如果是错误的,使用 Spring Framework 或 IoC 确保不变性的方法是什么?
【问题讨论】:
-
一次性使用是什么意思?
-
我的意思是一个 setter 只能被使用一次(当 IoC 初始化 Spring 上下文时),这样对象就不会被“其他”bean 或对象更改。
-
你不能
@Override,因为JdbcDaoSupport#setDataSource是最终的。
标签: java spring oop immutability