Как я могу загрузить файл дополнительных свойств в приложение spring boot, упакованное как war?

#spring #spring-boot #tomcat #war

#spring #spring-boot #tomcat #Война

Вопрос:

У меня стандартное веб-приложение springboot. Я хочу загрузить файл свойств, которого нет в classpath. application.properties находится в classpath и читается правильно.

У меня нет проблем при сборке jar. Я просто помещаю .properties рядом с jar, и это работает. Но когда я упаковываю war, я не смог заставить приложение прочитать файл свойств.

Ответ №1:

Вы помещаете файл свойств параллельно файлу application.properties и загружаете его в класс, подобный этому:

 @PropertySource("classpath:foo.properties")
public class My class {

@Value( "${some.property}" )
String myProp;

}
  

Ответ №2:

Вы можете с помощью ClassPathResource . заданный класс для загрузки ресурсов.

Это пример кода для вас

 ClassPathResource resource = new ClassPathResource("/application/context/blabla.yml");
InputStream inputStream = resource.getInputStream();
File file = resource.getFile();

// using inputStream or file
  

ClassPathResource

Ответ №3:

Вы можете использовать spring application.properties для создания профилей spring и использовать профили spring для определения отдельных свойств для каждой среды по своему усмотрению.Вы даже можете разделить профили spring в разных файлах, таких как appication-dev.properties и т.д., Чтобы у вас мог быть каждый профиль spring в разных файлах.

Вы можете прочитать свойства, используя аннотацию @Configuration :

 @Configuration
@EnableConfigurationProperties(TestProperties.class)
public class MySampleConfiguration {
} 
  

Здесь TestProperties.class используется для сопоставления значений из файла свойств или yaml.
Подробная ссылка:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html