Автоматическая реконфигурация Spring Boot не работает на spring-boot-data-starter-jdbc - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь развернуть приложение весенней загрузки для CF, подключающего службу поддержки Postgres. Я вижу, что свойства db не заменяются во время выполнения на VCAP env. Я использую зависимость - spring-boot-starter-jdbc (не spring-boot-starter-data-jpa, поскольку я собираюсь использовать шаблон JDBC, а не JPA).

Steps

Добавлены следующие jar-файлы в pom.xml (spring-boot-starter-data-jpa, postgresql- driver)

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>

Создать бин, возвращающий тип DataSource

@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource() {
    @SuppressWarnings("rawtypes")
    DataSourceBuilder builder = DataSourceBuilder.create();
    return builder.build();
}

Укажите свойства соединения в application.properties.

spring.datasource.jdbcUrl=jdbc:postgresql://localhost:5432/test
spring.datasource.username= dummy
spring.datasource.password=dummy
spring.datasource.platform=postgresql

При этом локальная настройка работает нормально. Когда приложение развертывается в Cloud Foundry, ожидается, что автоматическая реконфигурация пружины должна заменить бин свойствами в vcap.
Однако значения, похоже, не заменяются, и система пытается подключиться к локальному узлу на CF, что не удается.

Я просмотрел все документы, и они, похоже, работают с spring-boot-starter-data-jpa, но не с jdbc. Я вижу, что автоматическое перенастройка не работает в случае сценария JDBC.

Любая помощь приветствуется.

Спасибо и С уважением, Веера

1 Ответ

2 голосов
/ 13 июня 2019

Я настоятельно рекомендую вам не использовать автоматическую реконфигурацию. Это круто для демо, но в итоге его сложно использовать всерьез. Это слишком волшебно, и трудно отлаживать, когда это не работает, вот с чем вы тут столкнулись.

Есть несколько других способов сделать это:

  • Spring Boot выставляет VCAP_SERVICES как свойства типа vcap.services.<name>.credentials.username. Вы можете использовать их для определения источника данных вручную. Смотрите здесь . Сочетание этого с профилем «облачного» позволяет легко переключаться между локальным и облачным.
  • Вы можете использовать Spring Cloud Connectors . Автоматическая реконфигурация автоматически отключится при использовании SCC. Затем вы можете использовать SCC, чтобы выбрать службу и получить из нее источник данных.
  • Вы можете использовать новую библиотеку java-cfenv , которая предназначена для лучшего дополнения Spring Boot .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...