Я зазвичай налаштовую applicationContext, використовуючи конфігурацію на основі анотацій, а не конфігурацію на основі XML . У будь-якому випадку, я вважаю, що вони обидва мають однаковий пріоритет .
* Відповідаючи на ваше запитання, системна змінна має вищий пріоритет *
Отримання компонентів на основі профілю з applicationContext
Використовуйте @Profile на Bean
@Component
@Profile("dev")
public class DatasourceConfigForDev
Тепер профіль є dev
Примітка: якщо Профіль вказано так,
@Profile("!dev")
тоді профіль виключить розробник і буде для всіх інших.
Використовуйте атрибут профілі в XML
<beans profile="dev">
<bean id="DatasourceConfigForDev" class="org.skoolguy.profiles.DatasourceConfigForDev"/>
</beans>
Встановіть значення для профілю:
Програмно через інтерфейс WebApplicationInitializer
У веб-додатках WebApplicationInitializer можна використовувати для програмної конфігурації ServletContext
@Configuration
public class MyWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("spring.profiles.active", "dev");
}
}
Програмно через ConfigurableEnvironment
Ви також можете встановити профілі безпосередньо в середовищі:
@Autowired
private ConfigurableEnvironment env;
env.setActiveProfiles("dev");
Параметр контексту в web.xml
профілі також можна активувати в web.xml веб-програми, використовуючи параметр контексту:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/app-config.xml</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>
Параметр системи JVM
Імена профілів, передані як параметр, будуть активовані під час запуску програми:
-Dspring.profiles.active=dev
В середовищах IDE ви можете встановити змінні та значення середовища для використання під час запуску програми. Нижче наведено конфігурацію запуску в Eclipse:
Будь-який компонент, який не вказує профіль, належить до профілю “за замовчуванням”.
Пріоритетним порядком є:
- Параметр контексту в web.xml
- WebApplicationInitializer
- Параметр системи JVM
- Змінна середовища