Springboot+Mybatis+拦截器自定义日志处理不起作用怎么办?

NUPT_LWN 2020-07-21 05:19:04
定义了一个mybatis 过滤日志的拦截器

@Component
@Intercepts({
@Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }),
@Signature(type = Executor.class, method = "query", args = { MappedStatement.class, Object.class,
RowBounds.class, ResultHandler.class }),
@Signature(type = Executor.class, method = "query", args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class })
})
public class SqlDIYInterceptor implements Interceptor {
public Object intercept(Invocation invocation) throws Throwable {
//处理逻辑
}
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}

public void setProperties(Properties properties0) {
this.properties = properties0;
}
}


定义了@Configuration
并且在代码中
public SqlSessionFactory paySqlSessionFactory(@Qualifier("DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper*.xml"));
bean.setPlugins(new Interceptor[]{new SqlDIYInterceptor()});
return bean.getObject();
}


定义了日志输出等级 涉及到DAO的
level:
mapper: debug

以上配置后无效

后来我换了一种方式yml中加入了 config-location:mybatis.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<plugins>
<plugin interceptor="cn..SqlDIYInterceptor">
</plugin>
</plugins>
</configuration>


同样也不起作用

想请教下 我该从什么角度、细节定位问题呢?

...全文
5069 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
boy_refuel 2020-10-09
  • 打赏
  • 举报
回复
你好,楼主,解决了吗,我现在被这个搞的自闭了都
伱給的囘憶 2020-07-23
  • 打赏
  • 举报
回复
是不是没扫描到,你在启动类上加这个拦截器的扫描路径试试
pengzhistar 2020-07-23
  • 打赏
  • 举报
回复
paySqlSessionFactory 这个里面打印一个日志,看看是否初始化成功了,org.mybatis.spring.SqlSessionFactoryBean.setPlugins既然采取了new,那么就不需要@Component这个了,如果想更spring一些,那么 paySqlSessionFactory(@Qualifier("DataSource") DataSource dataSource)可以改成 paySqlSessionFactory(@Qualifier("DataSource") DataSource dataSource,@Qualifier("sqlDIYInterceptor")) SqlDIYInterceptor interceptor

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧