Сообщения

Показаны сообщения с ярлыком "Spring Environment"

Spring IoC контейнер: абстракция Environment, использование @PropertySource

Изображение
Аннотация @PropertySource предоставляет удобный и декларативный механизм для добавления PropertySource в Spring Environment. Учитывая файл с именем app.properties, который содержит пару ключ-значение testbean.name=myTestBean, следующий класс @Configuration использует @PropertySource таким образом, что вызов testBean.getName() возвращает myTestBean: Java @Configuration @PropertySource("classpath:/com/myco/app.properties") public class AppConfig { @Autowired Environment env; @Bean public TestBean testBean() { TestBean testBean = new TestBean(); testBean.setName(env.getProperty("testbean.name")); return testBean; } } Kotlin @Configuration @PropertySource("classpath:/com/myco/app.properties") class AppConfig { @Autowired private lateinit var env: Environment @Bean fun testBean() = TestBean().apply { name = env.getProperty("testbean.name")!! } } Любые заполнит...

Spring IoC контейнер: абстракция Environment, PropertySource

Изображение
Абстракция Spring Environment предоставляет операции поиска по настраиваемой иерархии источников свойств. Рассмотрим следующий список: Java ApplicationContext ctx = new GenericApplicationContext(); Environment env = ctx.getEnvironment(); boolean containsMyProperty = env.containsProperty("my-property"); System.out.println("Содержит ли мое окружение свойство 'my-property'? " + containsMyProperty); Kotlin val ctx = GenericApplicationContext() val env = ctx.environment val containsMyProperty = env.containsProperty("my-property") println("Содержит ли мое окружение свойство 'my-property'? $containsMyProperty") В предыдущем фрагменте мы видим высокоуровневый способ спросить Spring, определено ли свойство my-property для текущей среды. Чтобы ответить на этот вопрос, объект Environment выполняет поиск по набору объектов PropertySource. PropertySource - это простая абстракция над любым источником пар ключ-значение, а стан...

Spring IoC контейнер: абстракция Environment, профили определения компонентов

Изображение
Профили определения bean-компонентов обеспечивают механизм в основном контейнере, который позволяет регистрировать различные bean-компоненты в разных средах. Слово "среда" может означать разные вещи для разных пользователей, и эта функция может помочь во многих случаях использования, в том числе: Работа с источником данных в памяти при разработке по сравнению с поиском того же источника данных из JNDI в процессе контроля качества или производства. Регистрация инфраструктуры мониторинга только при развертывании приложения в производственной среде. Регистрация настраиваемых реализаций bean-компонентов для развертываний клиента A и клиента B. Рассмотрим первый вариант использования в практическом приложении, требующем DataSource. В тестовой среде конфигурация может выглядеть следующим образом: Java @Bean public DataSource dataSource() { return new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.HSQL) .addScript("my-schema.sql") ...

Spring IoC контейнер: абстракция Environment

Изображение
Интерфейс Environment - это интегрированная в контейнер абстракция, которая моделирует два ключевых аспекта среды приложения: профили и свойства. Профиль (profile) - это именованная логическая группа определений компонентов, которая регистрируется в контейнере только в том случае, если данный профиль активен. Компоненты могут быть назначены профилю независимо от того, определен он в XML или с аннотациями. Роль объекта Environment по отношению к профилям заключается в определении, какие профили (если есть) в настоящее время активны, а какие профили (если есть) должны быть активными по умолчанию. Свойства (Properties) играют важную роль почти во всех приложениях и могут происходить из различных источников: файлов свойств, системных свойств JVM, переменных системной среды, JNDI, параметров контекста сервлета, специальных объектов Properties, объектов Map и т. д. Роль объекта Environment по отношению к свойствам состоит в том, чтобы предоставить пользователю удобный интерфейс службы д...