應用系統的開發經常有參數動態刷新的問題,一般的方案會比較復雜,其實只要保持一個原則: 保持類的無狀態,那么動態刷新參數是一簡很簡單的事情. 舉下面這個例子.
將我們原來的代碼:
//我們有很多類似這樣的UserSerive類,每個類都維護自己的狀態,每個類的屬性都需要動態刷新
public class UserService {
private String username; //現username為實例屬性,刷新會十分麻煩
public void setUsername(String v) {
this.username = v;
}
public void doSomeThing() {
loadUserDetail(username);
}
}
username是一個需要更新的系統參數,而UserSerivce存在spring容器中將username變量注入進來。 那么如果username這個參數需要更改的話會比較麻煩
修改為無狀態的類:
public class StateLessUserService {
private Properties properties; //該properties為系統全局共享,這樣內部進行參數的刷新,,將會十分方便
public void doSomeThing1() {
//實現1: 全局的properties
loadUserDetail(properties.getProperty("username"));
}
public void doSomeThing2() {
//實現2: 靜態方法得到配置,由Config統一維護參數
loadUserDetail(Config.getProperty("username"));
}
}
如實現2,現我們使用一個統一的Config類得到配置參數,只需要刷新該類,那與username類似的配置參數都可以立即修改。
如上描述: 只要我們的類無狀態,那么想要動態刷新參數是十分簡單的一件事.
再描述一個原則:
既然可以用如此簡單的方法達到我們的目的,為何要搞出那么復雜的方案. (簡單就是美)