springboot中注入对象很方便,但是如果类是个工具类,里面的静态方法,只能使用静态属性。这时候就要想办法让静态属性可以被注入。
重点有两点
- 让spring接管类,可以使用@Component、@Service等注解
- 使用setter或@PostConstruct,将属性注入
setter实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @Component public class GeoUtils { public static String redisKey; public static RedisTemplate redisTemplate;
@Value("${redisKey}") public void setRedisKey( String redisKey) { GeoUtils.redisKey = redisKey; }
@Autowired public void setRedisTemplate(RedisTemplate redisTemplate){ GeoUtils.redisTemplate = redisTemplate; } }
|
PostConstruct方式实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| @Component public class GeoUtils {
public static RedisTemplate redisTemplateObj;
public static String redisKey;
/** * 这里的属性名称不能变要和定义的bean名字一样,如果修改了redisTemplate会报错 */ @Autowired private RedisTemplate redisTemplate; @Value("${zd.agreement.recharge.url}") private String rediskeyValue;
@PostConstruct public void init(){ GeoUtils.redisTemplateObj = this.redisTemplate; GeoUtils.redisKey = this.rediskeyValue; } }
|