创星网络[分享知识 传递快乐]

标题: Spring给类中静态变量赋值 [打印本页]

作者: luinstein    时间: 2012-9-25 22:26
标题: Spring给类中静态变量赋值
Spring的设计原则是尽可能的用实例,且是尽可能多的用单态实例,从它Bean的配置文件中就可以知道。不过有时注入并不是最好的处理方法,特别是对于遗留类的处理,可能用静态类是更好的处理方法,因为静态类不需要注入,就不需要太多的改变原来的代码。Spring的注入有一个问题就是普通类没有办法获得Bean文件中的bean实例。这就是如果是在Web的Servlet环境中可以通过WebApplicationContextUtils,如果是普通类就不好处理了。这需要一点设计的技巧。下面是一个静态类使用Bean文件中实例的例子
  1. public class UserinfoUtil  
  2.   
  3. {  
  4.   
  5.     private IUserInfo userInfo;  
  6.   
  7.     private static UserinfoUtil info;  
  8.   
  9.     public void setUserInfo(IUserInfo userInfo)  
  10.   
  11.     {  
  12.   
  13.         this.userInfo = userInfo;  
  14.   
  15.     }  
  16.   
  17.     public void init()  
  18.   
  19.     {  
  20.   
  21.         info = this;  
  22.   
  23.         info.userInfo = this.userInfo;  
  24.   
  25.     }  
  26.   
  27.     public static int addUserLoginCnt(String phonenumber)  
  28.   
  29.     {        
  30.   
  31.         return info.userInfo.addUserLoginCnt(phonenumber);  
  32.   
  33.     }  
  34.   
  35. }  
复制代码
相应的Bean文件的配置
  1. <bean id="userinfoUtil" class="com.huawei.aimi.webportal.service.UserinfoUtil" init-method="init">  
  2.   
  3.          <property name="userInfo" ref="userInfo"/>  
  4.   
  5.   </bean>  
复制代码
这样就可以用静态灶来访问Spring的单例配置了

有几点需要注意的地方

1.一定要用初始化方法,如果没有init方法直接在构造器中,如果用new ()实例就会出现问题

2.this一定也只能在init方法中使用,不能在构造器中使用

3.不要去实现Spring 的相关接口,而应当使用初始化方法

from:http://panyongzheng.iteye.com/blog/1678065





欢迎光临 创星网络[分享知识 传递快乐] (http://bbs.cxweb.com.cn/) Powered by Discuz! X3