Spring 注入静态变量 解决方案

3 篇文章 0 订阅

今天写项目遇到了一个问题:想在spring中注入静态变量。通过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. private static IManageResService service;
      
      static{
        TimerTask task = new TimerTask() {
          @Override
          public void run() {
            log.info("定时统计机构和用户排行榜开始");
            service.statistics();
          }
        };
        Timer timer = new Timer();
        long delay = 60 * 1000;//1分钟
        long intevalPeriod = 60 * 60 * 1000;//1小时
        // schedules the task to be run in an interval
        timer.scheduleAtFixedRate(task, delay, intevalPeriod);
      }
      
      @PostConstruct  
      public void init() {  
        service = this;  
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值