Я использую AbstractAnnotationConfigDispatcherServletInitializer
для настройки своего веб-приложения. У меня также есть класс @Configuration
, который я использую для создания нескольких бобов. В этом классе я использую аннотацию @PropertySource
для загрузки файла свойств для различных параметров (например, сведения о соединении с базой данных).Настройка активного профиля для AbstractAnnotationConfigDispatcherServletInitializer, который можно использовать с @PropertySource?
В настоящее время я использую профили Maven с задачами Ant для создания правильных файлов свойств для среды выполнения. То есть, я получаю Maven для перемещения «prod.properties» или «dev.properties» в «application.properties» (который использует класс) во время сборки. Что бы я хотел сделать, это использовать Spring-профили, чтобы устранить это. Я хотел был бы быть в состоянии сделать следующее:
@PropertySource(value = "classpath:/application-${spring.profiles.active}.properties")
Я также хочу установить профиль без использования каких-либо XML. Поэтому мне нужно будет настроить профиль на основе наличия системного свойства. Например,
String currentEnvironment = systemProperties.getProperty("current.environment");
if (currentEnvironment == null) {
((ConfigurableEnvironment)context.getEnvironment()).setActiveProfiles("production");
} else {
((ConfigurableEnvironment)context.getEnvironment()).setActiveProfiles(currentEnvironment);
}
Я не уверен, где бы я мог это сделать. Согласно an answer связанному с этим вопросу, это можно сделать в переопределении метода createRootApplicationContext
в моем классе инициализатора. Но этот ответ также зависит от загружаемых классов конфигурации перед настройкой профиля.
Является ли это тем, что я хочу сделать возможным? Если да, то как?
@Charles, почему вы удалили тег [spring-3.2]? Это важно. Основной класс инициализатора не существует до 3.2. –
Новые теги версии [следует избегать] (http://meta.stackexchange.com/a/85744/135887), когда тег существующей версии уже охватывает ту же область. В выдержке wiki '[spring-3]' tag wiki указано, что это для ** всех ** 3.x версий Spring. Это будет 3.2. Новые функции - это не те вещи, которые собираются разбить достаточно, чтобы строго требовать новый тег здесь. (Также имейте в виду количество вопросов для основного тега версии - менее 600. Фрагментация * плохо *.) – Charles
Перечитайте свою ссылку. «Единственными вопросами, которые должны использовать тег C# -4.0, на мой взгляд, являются те вопросы, которые специально задают детали о функциях, добавленных в 4.0». - Я задаю вопрос о характеристике, характерной для 3.2_. –