首页 > 作文

mybatis拦截器无法注入spring bean的问题解决

更新时间:2023-04-04 21:42:42 阅读: 评论:0

公司要整合rabbitmq与mybatis拦截器做一个数据同步功能。

整合过程中大部分环节都没什么问题,就是遇到了mybatis拦截器

@intercepts(@signature(type = executor.class, method = "update", args = {mappedstatement.class, object.class}))@componentpu古典诗歌blic class mybatisinterceptor i新竹高于旧竹枝mplements interceptor

无法通过注解进行注入一些持久层的dao对象,导致dao一直取到空值。

取dao对象目的是要查询当前代码的执行环境是生产还是测试环境。

因为生产者代码不需要在测试环境执行,这个区分的数据存在数据库里面。 

最初,我通过@autowired是行不通的,因为

所以我继续寻找方法,于是我找到了用applicationcontext的方式获取spring容器企图剑走偏锋

结果发现每一次执行classpathxmlapplicationcontext都会导致容器重新加载,但是我这个mybatisinterceptor带了@component也会跟着重新加载,导致isgrey清空

甚至导致rabbitmqconfig这个类也跟着重新加载

导致这个监听容易一直重新加载,断点一直进入,这里有用到messagelistener这个消息监听器也是一个单例bean对象,也会重新加载

所以会导致测试的时候出现bug,因为这个系统环境信息synvinfo只需要加载一次

所以applicationcontext这个方式也是走不通,我不推荐。

思来想去成都大学师范学院,我发现  mybatis拦截器  具体实现逻辑的方法  producesqldata  里面我用的是  springbeanutils.getbean  方法就能获取得到数据,

rabbittemplate是定义在rabbitmqconfig代码里的,r班级简介创意abbitmqconfig这个类是个@configuration注解

但是获取的数据是通过@bean方式获取的,springbeanutils.getbean无法获取到sqlssionfactory

这里面的dao对象,所以直接

也会报错,提示synvinfodao没有被定义。

所以我思索了下,在@configuration可以@autowired成功,那我为何不参考rabbittemplate一样把synvinfo也变成一个bean的单例对象呢?

于是我将synvinfo如rabbittemplate一样配置成了单例bean对象,通过@bean注解

在mybatisinterceptor里面通过springbeanutils.getbean方式获取,最后实践可行,不会出现重复加载容器的问题,也能在拦截器中取到spring bean

到此这篇关于mybatis拦截器无法注入spring bean的问题解决的文章就介绍到这了,更多相关mybatis拦截器无法注入spring bean内容请搜索www.88755小鱼游啊游1.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 21:42:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/7f81b469f26f404a5e3708961319cf12.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:mybatis拦截器无法注入spring bean的问题解决.doc

本文 PDF 下载地址:mybatis拦截器无法注入spring bean的问题解决.pdf

标签:加载   对象   也会   拦截器
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图