Spring 注入静态变量 解决方案

来源:互联网 发布:软件开发教程视频 编辑:程序博客网 时间:2024/05/16 11:53

先说下我现在使用的版本:Spring3.0 annotation写的

今天写项目遇到了一个问题:想通过jstl自定义函数来实现页面上面的一部分内容。通过Spring注入后发现报如下错误:

@Resource annotation is not supported on static fields

上网搜寻发现,Spring注解注入不支持静态变量注入,遂想办法解决。

 

首先看到的方法是有一个

Java代码  收藏代码
  1. <bean id=”userService”   
  2.  class=”bookstore.service.UserService”   
  3.  init-method=”init” destroy-method=”destroy”>   
  4.     …  
  5. </bean>   

 

这样的方法,通过编写一个方法init(),然后通过xml配置 init-method=”init” ,在init方法中从取值赋成静态的,但是我不想写xml,毕竟项目里主要用的都是annotation方式,于是发现如下两个注解:

@PostConstruct 和 @PreDestroy

一个是在初始化之后调用,一个是在摧毁之前调用。这样就可以使用的。

我在junit下做了测试,就不发项目代码了,代码如下:

Java代码  收藏代码
  1. @Resource  
  2. private HibernateTemplate hibernateTemplate;  
  3.   
  4. private static TalentsDaoImplTest td;  
  5.   
  6. @PostConstruct  
  7. public void init() {  
  8.   td = this;  
  9.   td.hibernateTemplate = this.hibernateTemplate;  
  10. }  
  11.   
  12. @Test  
  13. public void testStatic() {  
  14.   Talents talents = td.hibernateTemplate.get(Talents.class, 1L);  
  15.   System.out.println(talents.getAge());  
  16. }  

 

 

发这篇只是发现,可能是这个问题出现的或者是使用的人比较少,但是这个解决方案真的不太好找,我就总结下来,希望可以给大家提供帮助。

还有就是我这样是可以解决了,不知道大家是否还有更好的解决办法,欢迎大家共同来分享。


原文地址:http://irfen.iteye.com/blog/1335016

0 0