#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
Ответ №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