根據不可變對象的定義(see this question),我不確定是否將Spring DAO的setter作爲唯一一個用途來確保不可變性。例如(數據源屬性):Spring DAO和不可變對象
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框架或IoC的?
你是什麼意思只有一次使用? – Adelin
我的意思是一個setter只能使用一次(當IoC初始化Spring上下文時),這樣對象不會被其他bean或對象改變。 –
由於'JdbcDaoSupport#setDataSource'是最終的,你不能'@ Override'。 – dit