#java #spring #spring-boot #spring-profiles
Вопрос:
Я пытаюсь загрузить файл свойств 2 в весеннюю загрузку. Один из них содержит метаданные (подключение к базе данных и другие подобные свойства). Другой содержит бизнес-логику (сопоставление между вышестоящей и нижестоящей сущностью. Это сопоставление отличается в Dev и Prod, поэтому для них не может быть одного файла ресурсов).
Я хочу использовать профили Spring для различных сред (Dev, Stage, Prod). Итак, я создал 3 разные папки по src/main/resources
1 для каждой среды. Используя spring profies, я знаю, как создать файл env для конкретного приложения-env.properties. Однако я не могу продвинуться в том, как использовать то же самое для моего варианта использования.
PS : Не добавляю никакого фрагмента кода, потому что вопрос этого не требует.
Ответ №1:
Вот пример из документов:
$ java -jar myproject.jar --spring.config.location=
optional:classpath:/default.properties,
optional:classpath:/override.properties
Вы также можете определить это в своем коде перед запуском Spring Boot:
public static void main(String[] args) {
System.setProperty("spring.config.location", "optional:classpath:/default.properties,optional:classpath:/override.properties");
SpringApplication.run(Application.class, args);
}
Чтобы использовать пользовательские префиксы для конкретных свойств вашего приложения, вы можете определить @ConfigurationProperties
класс(классы):
@Data
@ConfigurationProperties(prefix = "app.mapper")
public class MapperProperties {
private String foo;
}
и используйте его в любом компоненте:
@Component
@RequiredArgsConstructor
@EnableConfigurationProperties
public class YourComponent {
private final MapperProperties properties;
}
Комментарии:
1. Вместо использования «spring.config.location» и передачи нескольких файлов свойств, могу ли я использовать пользовательские ключи свойств для каждого ресурса? Пример : app.mapper = «dev/mapper.properties», app.config=»dev/application.properties»? Я спрашиваю об этом, потому что сопоставитель анализируется и загружается в объект свойств.
2. Я не уверен, чего вы пытаетесь достичь… все ключи из всех местоположений объединяются вместе, образуя единую конфигурацию.