static里注入的类为Null空指针异常

最近在Static静态方法里注入的时候报空指针异常,报错下图:
在这里插入图片描述

看了一篇文章的解释:
https://blog.csdn.net/weixin_35676504/article/details/114097611?utm_source=app&app_version=5.3.1&utm_source=app

对代码进行了修改,使用注解配合set的方法注入,如下图:
在这里插入图片描述

总结,有三种解决方式:

1、将@Autowire加到构造方法上

@Component
public class JwtUtils {
    
    

	@Resource
	static
    private RedisService redisService;

	@Autowired
    public JwtUtils(RedisService redisService) {
    
    
        JwtUtils.redisService = redisService;
    }
}

2、使用Set注入

@Component
public class JwtUtils {
    
    

	static
    private RedisService redisService;

	@Autowired
    public void setRedisService(RedisService redisService) {
    
    
        JwtUtils.redisService = redisService;
    }

3、用@PostConstruct注解

@Component
public class JwtUtils {
    
    

	static
    private RedisService staticRedisService;
    
	private RedisService redisService;

	/**
	* 注释用于在完成依赖注入以后执行任何初始化之后需要执行的方法。必须在类投入使用之前调用此方法。
	*/
	@PostConstruct
    public void beforeInit() {
    
    
		staticRedisService = redisService;
	}
}

4、直接传值(引用mapper举例)

@Component
public class JwtUtils {
    
    
//不用注入、不用赋值等方式,直接传值

	 public static String handleDesensitizationMobile(MemberMapper memberMapper,String mobile) {
    
    
        MemberMapper member = memberMapper;
        String result = member.selectById(memberShiroVO.getId()).getAccount();
        return result;
    }
}

猜你喜欢

转载自blog.csdn.net/Ivy_Xinxxx/article/details/124681351