多个Spring Datasource:考虑定义ExternalJarRepository类型的Bean。

问题描述 投票:0回答:1
@SpringBootApplication
@EnableJpaRepositories(basePackages=..,entityManagerRef=..)
@ComponentScan("com.main", "com.external.jar")
public class Application{
...
//methods defining primary datasource, transaction manager, entityManagerFactoryBean
}

外罐

@Configuration
@EnableJpaRepositories(basePackages="com.external.model", entityManagerRef=.., transactionManager=..)
public class ExternalDataConfig{

//methods defining datasource, transaction manager, entityManagerFactoryBean

}

public DataRepository extends CrudRepository<T,ID>{}

@Service 
public class ExternalService{
@Autowire
private DataRepository externalRepository;
}

错误Field externalRepository in com.external.jar.ExternalService required a bean of type DataRepository'

但是日志显示默认和外部仓库都扫描成功,不知道为什么依赖注入机制找不到bean。

.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 55ms. Found 3 JPA repository interfaces.
.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 75ms. Found 21 JPA repository interfaces.
dependency-injection spring-data-jpa spring-data multiple-databases
1个回答
0
投票

原来,默认的应用程序也有一个名字为 DataRepository 和应用程序设置允许Bean覆盖

spring:
  main:
    allow-bean-definition-overriding: true

重命名 DataRepository 外部依赖中的bean成功了

© www.soinside.com 2019 - 2024. All rights reserved.