设为首页收藏本站
开启辅助访问
切换到宽版

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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索
查看: 4031|回复: 0
打印 上一主题 下一主题

Spring给类中静态变量赋值

[复制链接]

我玩的应用:

跳转到指定楼层
楼主
发表于 2012-9-25 22:26:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2024-9-22 06:48 , Processed in 0.096948 second(s), 29 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表