#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 {