springboot启动日志:Multiple Spring Data modules found, entering strict repository configuration mode
问题描述
最近启动springboot项目的时候,发现有一条日志:Multiple Spring Data modules found, entering strict repository configuration mode!,该日志虽然是INFO级别的,但强迫症看着实在是太难受了。所以花了一些时间去解决这个问题。这条日志的大概意思是,springboot发现了多个repository,为了代码的健壮性,自动进入严格配置模式。啥意思呢,用过repository的同学都知道,使用repository后,可以通过类似findById之类的简单写法,避开写SQL等查询,直接查询数据库。所以,当你有多种repository后,为了避免混乱,最好给不同的repository配置扫描路径。避免把Mysql的repository让redis给读取了等错误情况。
解决办法
- 如果你确实在使用多种repository,那么可以在main函数的启动注解上,标明repository扫描路径。比如:
@EnableMongoRepositories(basePackages = "***.mongo.dao")、@EnableRedisRepositories(basePackages = "***.redis.dao")等。 - 这种情况应该比较多,像我一样,第一次听说redis还有repository的……都是直接通过
RedisTemplate直接操作的。所以直接去掉redis的repository类即可。在main函数上修改springboot注解,exclude相关类。代码:@SpringBootApplication(exclude = { RedisRepositoriesAutoConfiguration.class})。如下图所示:

当然,你重复的repository类可能和我不一样,可以自己查看一下。首先在IntelliJ中双击shift键,搜索RepositoryFactorySupport类,然后打开它。点击类名左侧的箭头,看看有哪些实现类,这些实现类就是一个一个的repository,排除掉即可。操作截图如下:

点击箭头,查找实现类:

根据这个结果,把你不用的exclude排除掉即可!
版权声明:《springboot启动日志:Multiple Spring Data modules found, entering strict repository configuration mode!》为CoderBBB作者「ʘᴗʘ」的原创文章,转载请附上原文出处链接及本声明。
原文链接:https://www.coderbbb.com/articles/26
相关文章:
- Springboot使用redis的setnx和getset实现可用于分布式环境的redis并发锁
https://www.coderbbb.com/articles/2 - Springboot整合Redis和redis常用操作演示
https://www.coderbbb.com/articles/20 - Springboot使用redis+session配合Interceptor拦截器实现注册登录
https://www.coderbbb.com/articles/23
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
