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

来源:互联网 发布:ubuntu zip命令 编辑:程序博客网 时间:2024/06/01 09:00

今天在搞一个工具类的时候,需要在工具类的静态方法中调用mapper的方法插入数据,但是,用spring的@Autowired注入bean后,测试一跑,报空指针异常。

网上有很多解决方案,学习了一波,这只列自己使用的方法。

解决方案如下:

1.对工具类使用@Component 注解

2.@Autowired 注解注入bean

3.@PostConstruct 使用该注解定义init()方法,在方法中给logTool赋值

使用时调用logTool.xxxMapper.method();

ok,搞定!

代码如下:

@Componentpublic 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);
} }

原创粉丝点击