在需要时发现了超过1豆的液体果皮。 我目前在开始时收到以下错误: ********************************* 应用程序无法启动 ********************************* 描述: 方法中的方法3的参数。

问题描述 投票:0回答:0

@Bean public SpringLiquibase liquibase(ObjectProvider<DataSource> dataSource, @LiquibaseDataSource ObjectProvider<DataSource> liquibaseDataSource, LiquibaseProperties properties, LiquibaseConnectionDetails connectionDetails) {...}

我发现冲突的豆类是液体的类型。我了解问题之所以发生问题,是因为我的应用程序是使用Docker组成的文件启动的,该文件不仅运行了应用程序,而且还启动了KeyCloak和两个数据库。这导致自动配置检测两个数据源。就我而言,我希望Liquibase仅连接到应用程序的数据源,而不是KeyCloak’s。
我的应用程序中的配置是properties文件:

spring.datasource.url=${SERVER_DB_URL}/${SERVER_DB} spring.datasource.username=${SERVER_DB_USER} spring.datasource.password=${SERVER_DB_PASSWORD} spring.datasource.driver-class-name=org.postgresql.Driver spring.liquibase.url=${SERVER_DB_URL}/${SERVER_DB} spring.liquibase.user=${SERVER_DB_USER} spring.liquibase.password=${SERVER_DB_PASSWORD} spring.liquibase.change-log=classpath:db/changelogs/changelog-master.xml
显然,KeyCloak DB URL与众不同:JDBC:Postgresql:// localhost:5433.

我还添加了我的作曲,以防万一它可以帮助:

services: keycloak_db: image: postgres container_name: keycloak_db restart: always ports: - "${KEYCLOAK_DB_PORT}:5432" environment: POSTGRES_DB: ${KEYCLOAK_DB} POSTGRES_USER: ${KEYCLOAK_DB_USER} POSTGRES_PASSWORD: ${KEYCLOAK_DB_PASSWORD} volumes: - keycloak-db-volume:/var/lib/postgresql/data keycloak: image: keycloak/keycloak container_name: keycloak restart: always command: - start-dev ports: - "${KEYCLOAK_PORT}:8080" environment: KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN} KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD} KC_DB: postgres KC_DB_URL: jdbc:postgresql://keycloak_db/${KEYCLOAK_DB} KC_DB_USERNAME: ${KEYCLOAK_DB_USER} KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD} depends_on: - keycloak_db volumes: - keycloak-volume:/opt/keycloak/data/import/ postgres: image: postgres container_name: server_db restart: always ports: - "${SERVER_DB_PORT}:5432" environment: POSTGRES_DB: ${SERVER_DB} POSTGRES_USER: ${SERVER_DB_USER} POSTGRES_PASSWORD: ${SERVER_DB_PASSWORD} depends_on: - keycloak volumes: - server_db_volume:/var/lib/postgresql/data
,我该如何定义要使用的特定豆?我已经看过一个曾经使用@primary的示例,但没有液体问题确切地出现问题,因此它不起作用。同样,豆的定义位置是“未知”的事实,也使其更加复杂。
尽管起初我希望它只是忽略了KeyCloak的那些,但我知道将来有一种允许两者的方式可能很有用,但是我的首要任务是仅与第一个竞选。
    

通过运行一些测试,我发现,尽管我尝试在应用程序中指定数据源。我可以证明,尽管只有通过反复试验,但这是由于以下插件所致:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-docker-compose</artifactId>
    <scope>runtime</scope>
</dependency>

当我使用Intellij运行我的应用程序时,该组合也被执行了,我发现它很棒,但是容器和应用程序之间的“自动配置”使其完全检测了新数据源而不需要它。

尽管我可以使它起作用,但至少目前,我仍然认为我缺乏一种方法,如果我再次添加插件,请抑制spring autoconfiguration for dataSources并实现我自己的。

spring postgresql docker-compose keycloak liquibase
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.