在工具类静态方法调用@Autowired注入的bean方法

发布时间 2023-03-29 15:15:35作者: 没有烦恼的猫猫

今天在搞一个工具类的时候,需要在工具类的静态方法中调用mapper的方法插入数据,但是,用spring的@Autowired注入bean后,测试一跑,报空指针异常。
解决方案如下:
1.对工具类使用@Component 注解
2.@Autowired 注解注入bean
3.@PostConstruct 使用该注解定义init()方法,在方法中给logTool赋值
使用时调用logTool.xxxMapper.method();
ok,搞定!

@Component
public class LogTool {
    @Autowired
    private XxxMapper xxxMapper;
 
    public static LogTool logTool;
 
    @PostConstruct
    public void init() {
        logTool = this;
    }
 
 
    public static void error(Class logClass, Object e) {
        Logger logger = Logger.getLogger(logClass);
        String msg ;
        if (e instanceof Exception) {
            msg = getException((Exception) e);
 
        } else {
            msg = e.toString();
        }
        logger.error(msg);
        Test test= new Test();
        
 
 
        test.setName("testError");
        test.setMsg("testError"); 
        logTool.xxxMapper.insert(test);
    } 
}