badqiu

XPer
随笔 - 46, 文章 - 3, 评论 - 195, 引用 - 0
数据加载中……

系统参数的动态刷新,只需一个原则:保持类的无状态

应用系统的开发经常有参数动态刷新的问题,一般的方案会比较复杂,其实只要保持一个原则: 保持类的无状态,那么动态刷新参数是一简很简单的事情. 举下面这个例子.

将我们原来的代码:

//我们有很多类似这样的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类似的配置参数都可以立即修改。

如上描述: 只要我们的类无状态,那么想要动态刷新参数是十分简单的一件事.

再描述一个原则:

既然可以用如此简单的方法达到我们的目的,为何要搞出那么复杂的方案. (简单就是美)

posted on 2010-05-25 00:43 badqiu 阅读(2015) 评论(5)  编辑  收藏

评论

# re: 系统参数的动态刷新,只需一个原则:保持类的无状态  回复  更多评论   

你在说什么?没看懂
2010-05-25 09:23 | 咖啡妆

# re: 系统参数的动态刷新,只需一个原则:保持类的无状态  回复  更多评论   

不知所谓???
2010-05-25 09:50 | Andyson

# re: 系统参数的动态刷新,只需一个原则:保持类的无状态  回复  更多评论   

难道没有描述清楚,意思如果 username是一个需要更新的系统参数,而UserSerivce存在spring容器中将username变量注入进来。 那么如果username这个参数需要更改的话会比较麻烦
2010-05-25 10:30 | badqiu

# re: 系统参数的动态刷新,只需一个原则:保持类的无状态  回复  更多评论   

这个思想还是不错的... 具体要看用到哪里。
2010-05-25 10:58 | fantasy

# re: 系统参数的动态刷新,只需一个原则:保持类的无状态  回复  更多评论   

lz从哪里学的?不错
2010-05-25 21:48 | Jie

只有注册用户登录后才能发表评论。


网站导航: