如下注入方式报空指针异常: java.lang.NullPointerException: null
java
@Autowired
private StringRedisTemplate redisTemplate;
**解决办法:**查看该类上有没有加注解,如@Component等,没加的话加上。
还有一种是在工具类中使用,由于要在其他静态方法中使用,如下我注入的是静态变量,也加了类注解,还是报空指针异常。
java
@Autowired
private static StringRedisTemplate redisTemplate;
解决办法: 使用Java提供的@PostConstruce注解,赋予静态对象redisTemplateStatic一个实例,代码如下,该方式不止作用于StringRedisTemplate ,其他第三方库静态属性均可。@PostConstruct该注解被用来修饰一个非静态的void()方法。PostConstruct在构造函数之后执行,init()方法之前执行。
执行顺序:
Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
java
@Component
public class GlobalUtils {
private static StringRedisTemplate redisTemplateStatic;
@Autowired
private StringRedisTemplate redisTemplate;
private static ObjectMapper objectMapper;
@Autowired
private ObjectMapper mapper;
@PostConstruct
public void initData() {
objectMapper = this.mapper;
redisTemplateStatic = this.redisTemplate;
}
// 可直接在其他静态方法中使用
}