spring静态注入组件——工具类常用

来源:互联网 发布:淘宝网法院拍卖 编辑:程序博客网 时间:2024/06/09 20:24

如果直接用spring注入静态属性,则会报错,提示@Resource annotation is not supported on static fields,如果又一定要通过spring注入bean,可以采用@PostConstruct注解在某个用来初始化的方法上,注入时注入到另一个不是静态的变量里,然后在初始化方法里面将注入好的变量赋值给静态变量,通过这些操作就给静态变量赋值。

package com.inth.base.util;import javax.annotation.PostConstruct;import javax.annotation.Resource;import org.springframework.stereotype.Component;import com.inth.service.core.cache.RedisCacheService;/** * 编号生成器 * <P>File name : CodeGenerator.java </P> * <P>Author : DingYinLong </P>  * <P>Date : Jul 15, 2014 </P> */@Componentpublic class CodeGenerator {@Resourceprivate RedisCacheService redisCacheService;public static RedisCacheService redisService;//通过该标签以及该方法实现给static属性注入@PostConstructpublic void init(){CodeGenerator.redisService = redisCacheService;}/** * 通过编号前缀以及编号值生成编号 * CodeGenerator.generate()<BR> * <P>Author : DingYinLong </P>   * <P>Date : Jul 15, 2014 </P> * @param code * @param num * @return */public static String generate(String code,String num){for (int i = code.length()+num.length(); i < Constans.CODE_LENGTH; i++) {code += "0";}return code + num;}/** * 用redis生成编码 * CodeGenerator.getRedisCode()<BR> * <P>Author : DingYinLong </P>   * <P>Date : Jul 21, 2014 </P> * @param code * @return */public static String getRedisCode(String code){synchronized (code) {Object num = redisService.get(code);if(num == null){redisService.persist(code, 1);num = 1;}redisService.persist(code, (Integer)num + 1);String str = generate(code, String.valueOf(num));return str;}}}
源代码的用途是利用redis来生成唯一有规律的编码

0 0
原创粉丝点击