Определите свойства в пользовательском файле для JPA данных Spring

#spring-boot

Вопрос:

У меня есть файл пользовательских свойств для моего приложения spring boot для конфигурации базы данных. Я использую spring data JPA для сохранения, по умолчанию spring boot выбирает application.properties для загрузки конфигураций.

Как избежать этого и использовать любой пользовательский файл, чтобы прочитать конфигурацию базы данных при запуске приложения

Пример : подключение к базе данных.свойства

 spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://ip:5432/HP
spring.datasource.username=hpadmin
spring.datasource.password=hp@12345
 

Спасибо

Ответ №1:

Вы избежите будущих осложнений, если будете использовать только одно и классическое приложение.свойства.

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

В любом случае, если вам нужно добавить дополнительные свойства вместе с application.properties, вы можете использовать один из следующих подходов:

PropertyPlaceholderConfigurer

Вы можете загрузить дополнительные свойства вместе с приложением.properties или полностью заменить его, если удалите приложение.properties

В вашем основном классе:

 @Configuration
public class PropertiesConfiguration {


    @Bean
    public PropertyPlaceholderConfigurer properties() {
        final PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
        ppc.setIgnoreResourceNotFound(true);

        final List<Resource> resourceLst = new ArrayList<Resource>();

        resourceLst.add(new ClassPathResource("database-connection.properties"));          

        ppc.setLocations(resourceLst.toArray(new Resource[]{}));

        return ppc;
    }
 

Ракушка

Вы можете заменить весь файл application.properties в момент запуска вашего jar параметром spring --spring.config.location

java -jar app.jar —spring.config.location=/foo/бар/подключение к базе данных.свойства

Источник собственности

Аналогично конфигурации свойств, но без кода java, просто @аннотации

 @PropertySources({@PropertySource(value = "classpath:database-connection.properties")})
public class Application {