Redis的自动注入

1
2
@Autowired
private RedisTemplate<String, String> redisTemplate;

Redis 自动注入出现java.lang.NullPointerException异常

原因

是因为定义了静态方法, 而RedisTemplate 不能用静态注入的方式。

解决方案

1、通过@PostConstruct 注解初始化实例

1
2
3
4
5
6
7
8
9
10
@Autowired
private RedisTemplate<String, String> redis;

public static RedisTemplate<String, String> redisTemplate;

@PostConstruct
public void getRedisTemplate() {
redisTemplate = this.redis;
}

2、将静态方法改成非静态,去掉static

@PostConstruct

是一个在spring框架中使用的注解,用于指定在对象初始化(构造方法之后)之后执行的方法。

方法必须要满足的条件

  • @PostConstruct注解的方法必须是非静态的。
  • @PostConstruct注解的方法不能有返回类型。
  • @PostConstruct注解的方法不能有参数。
  • @PostConstruct注解的方法必须由public访问修饰符修饰。