spring-boot 项目同时配置依赖spring-boot-starter-data-jpa和spring-boot-start-data-redis会出现如下信息:
2018-09-10 11:06:36.569 [INFO] - Multiple Spring Data modules found, entering strict repository configuration mode!
2018-09-10 11:06:37.278 [INFO] - Multiple Spring Data modules found, entering strict repository configuration mode!
2018-09-10 11:06:37.406 [INFO] - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.mytest.test.repo.dao.UserRepo.
2018-09-10 11:06:37.407 [INFO] - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.mytest.test.repo.dao.CarRepo.
2018-09-10 11:06:37.407 [INFO] - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.mytest.tset.repo.dao.UserCarRepo.
一般情况下对项目无影响,但有时候项目会无法启动获取很长时间才启动起来,但是项目不报错。
mysql,redis依赖如下:
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
...
mysql,redis配置文件:
# mysql
spring.datasource.url=jdbc:mysql://localhost:3306/mytest?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=root123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.hikari.connection-timeout=3000
spring.datasource.hikari.initialization-fail-fast=true
spring.datasource.hikari.max-lifetime=600000
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=20000
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.initialization=true
spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.transaction.rollback-on-commit-failure=true
# redis
spring.redis.database=0
spring.redis.host=localhost
spring.redis.password=redis
spring.redis.port=6379
spring.redis.pool.maxActive=8
spring.redis.pool.maxWait=-1
spring.redis.pool.maxIdle=8
spring.redis.pool.minIdle=0
spring.redis.timeout=2000
网上搜到一些方法但时并不管用,如:
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.multiple-modules
请问该如何解决???
<p>加上这个配置看看</p>
spring.data.redis.repositories.enabled=false
嗯,是的,加了这个配置后是可以的
<p>你发的文档里已经说得很清楚了,即使给出答案(答案本来也就在你眼前),你都不能理解和接受。<br>
做技术的还是要沉下心来好好读下文档,不要按自己已知的想法去理解问题,学习框架就要按框架里的思想去理解问题。
否则没几个人有耐心这样去帮你解决问题。
项目引用了spring-boot-starter-data-jpa和Redis两种Repository的引用
1, 需要使用两种不同类型的spring-data模块时,用Annotation指定Repository的扫描位置
@EnableJpaRepositories(basePackages = "com.mytest.test.repo.dao")
@EnableRedisRepositories(basePackages = "com.mytest.test.repo.redis", indexConfiguration = MyIndexConfiguration.class)
即使你没有redis repository也需要这样做,因为这样做的目的不是让你扫描redis repository,而是让redis配置类不要去扫描其它类型的repository
2,既然你没有使用redis repository的需求,那就不要启用RedisRepositories
或者不要引用spring boot的redis starter
你只是需要使用RedisTemplate,只引用spring-data-redis
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
基于你发的错误信息,基本断定是这个问题,如果真的不是这个问题,也欢迎指正。
3、关于第二种解决方案:spring-boot-starter-data-redis jar包是包含spring-data-redis这个jar包的,不同的是前者加入了netty连接池和spring-boot-starter.
谢谢您的批评忠告。是我没把问题讲述清楚:
1、如前面所示这个并不是一个错误信息【INFO】,正常情况下这样项目是没有问题的,spring-boot2.0后有些规则检查得更严格,可能会出现一些问题,就像是可能要很长时间项目才能情动起来。 2、关于第一种解决方案:即使加了这个注解后还是会有同样【INFO】。在这之前我已经尝试过文档中的方法,您给的建议我同样也做过了测试。
<p>这个问题就是你发的链接里的解决方法:</p>
将redis与jpa的repositories包分开,文档的例子是将mongo和jpa分开的例子
@EnableJpaRepositories(basePackages = "com.acme.repositories.jpa")
@EnableMongoRepositories(basePackages = "com.acme.repositories.mongo")
Jpa的可以,但是Redis只是用到了一些简单的String存储什么的,并没有定义特定的Repo,所以没有指定的包,这样并没有什么效果
<p>我的项目里也是引用</p>
spring-boot-starter-data-redis
但是配置了不启用repository,如果改成启用也有这个info。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。