不bb先上代码
@Component
public class RedisLock {
@Autowired
private StringRedisTemplate redisTemplate;
/**
* 加锁
*
* @param key key
* @param value 当前时间 + 超时时间
* @param timeout 超时时间
* @param timeUnit 时间单位
*/
public boolean lock(String key, String value, Integer timeout, TimeUnit t imeUnit) {
....
}
/**
* 解锁
*/
public static void unLock(String key) {
...
}
}
正常思路需要springbean直接@Component注入就能使用@Autowired 注入bean,使用时注入当前工具类,个人觉得这种写法不好,应为这是一个工具类,工具类使用时还需要注入这点我觉得很烦而且也会导致server类中出现大量的Spring bean注入。所以改一下
@Component
public class RedisLock {
private static StringRedisTemplate redisTemplate;
@Autowired
public void setRedisTemplate(StringRedisTemplate redisTemplate) {
RedisLock.redisTemplate = redisTemplate;
}
/**
* 加锁
*
* @param key key
* @param value 当前时间 + 超时时间
* @param timeout 超时时间
* @param timeUnit 时间单位
*/
public static boolean lock(String key, String value, Integer timeout, TimeUnit timeUnit) {
...
}
/**
* 解锁
*/
public static void unLock(String key) {
...
}
}
使用set方法注入的方式,就能给静态对象注入,相关方法也能加static。使用时就不需要注入工具类