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将按应有的方式启动

编辑

我不清楚如何配置两个独立的数据源

  • JPA的默认数据源
  • 用于JDBC(以及可能的其他JPA类)的附加数据源

  • 您使用的是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();
        }
    
    }