1 背景
项目里需要获取当前登录账号的名称,作为创建人或者修改人保存
2 解决
出现的问题:
一个工具类中的静态方法调用mybatis的mapper接口时,会出现@Autowired无法注入的问题,即使添加了这个注解,spring容器加载完成声明的参数也是空值。
工具类一般为静态,这样才可以直接调用,但是加上static后,会报错如下
Non-static field ‘employeeInfoMapper’ cannot be referenced from a static context
正解
重点步骤:
1,utils类上面添加@Component注解
2,@Autowired注入需要使用的mapper对象,这个注入的mapper本身并不是静态的
3,创建一个静态的utils的对象 private static SessionUtils sessionUtils
4,创建一个init方法,添加**@PostConstruct**注解,方法内容如下
如果在静态方法里面调用 spring ioc容器里面的bean,是不允许的。下面附一条连接,这个博主对此做了底层的分析
https://developer.aliyun.com/article/994827?spm=a2c6h.12873639.article-detail.44.127912e1YxIcRD&scm=20140722.ID_community@@article@@994827._.ID_community@@article@@994827-OR_rec-V_1