Java 在spring引导应用程序中设置备用数据源会导致liquibase失败
应用程序具有在Java 在spring引导应用程序中设置备用数据源会导致liquibase失败,java,spring-boot,spring-data,Java,Spring Boot,Spring Data,应用程序具有在Application.yml spring: datasource: type: com.zaxxer.hikari.HikariDataSource url: jdbc:oracle:thin:@localhost:1521:xe username: system password: oracle hikari: poolName: Hikari auto-commit: false 我为第二个数据源添加了配
Application.yml
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:oracle:thin:@localhost:1521:xe
username: system
password: oracle
hikari:
poolName: Hikari
auto-commit: false
我为第二个数据源添加了配置选项,用于完全不同的用途(JDBCTemplate)
然后,我添加了两个数据源,一个命名,另一个默认。如果没有默认值,liquibase将无法启动
@Configuration
public class LegacyConfiguration {
@Bean(name = "faas20")
@ConfigurationProperties(prefix = "faas20.ds")
public DataSource legacyDataSource() {
return DataSourceBuilder
.create()
.build();
}
@Bean
public DataSource defaultDataSource() {
return DataSourceBuilder
.create()
.build();
}
}
但应用程序的启动失败。
应用程序现在无法生成默认的EntityManagerFactory
为什么会受到影响
impl.OrderServiceImpl中构造函数的参数0需要一个名为“entityManagerFactory”的bean,但找不到该bean。考虑在配置中定义一个名为“EntIdMauleCurror”的bean。 如果没有这两个数据源,应用程序和liquibase将按应有的方式启动 编辑 我不清楚如何配置两个独立的数据源
您使用的是SpringBootStarter数据jpa吗?您可以@Autowired默认的spring数据源,而不是使用DataSourceBuilderies滚动自己的数据源。我使用的是spring boot starter数据jpa,但我不清楚如何配置两个单独的数据源,一个默认jpa数据源,还有一个我可以通过名称或其他机制注入的数据源。看起来默认数据源缺少@Primary和@ConfigurationProperties(prefix=“spring.datasource”),请参阅
@Configuration
public class LegacyConfiguration {
@Bean(name = "faas20")
@ConfigurationProperties(prefix = "faas20.ds")
public DataSource legacyDataSource() {
return DataSourceBuilder
.create()
.build();
}
@Bean
public DataSource defaultDataSource() {
return DataSourceBuilder
.create()
.build();
}
}