Spring-DM, вероятно, не поддерживает более новые версии Spring, но Eclipse Gemini Blueprint делает. Если вы можете использовать Spring 3.1.x или выше и Blueprint, вы можете, вероятно, получить профили Spring. Одним из способов сделать это будет extend the Blueprint Extender bundle с вашей собственной реализацией OsgiApplicationContextCreator
, которая настраивает активные профили Environment
, как вы сочтете нужным. Например, рассмотрим следующий пользовательский BlueprintContainerCreator
реализации:
public class MyOsgiApplicationContextCreator extends BlueprintContainerCreator {
@Override
public DelegatedExecutionOsgiBundleApplicationContext createApplicationContext(
BundleContext bundleContext) throws Exception {
DelegatedExecutionOsgiBundleApplicationContext applicationContext = super
.createApplicationContext(bundleContext);
if (null == applicationContext) {
// non-spring/blueprint bundles will not build an ApplicationContext
return null;
}
// determine environment profile here...
applicationContext.getEnvironment().setActiveProfiles("myProfile");
return applicationContext;
}
}
Вы должны были бы поместить это в пучок фрагмента, прикрепленного к калька расширитель пучка. Выполните следующие действия:
Вам необходимо создать пакет с тремя файлами в нем: META-INF/MANIFEST.MF, META-INF/spring/extender/extender.xml (файл xml можно назвать чем угодно с расширение xml, но должно быть в папке META-INF/spring/extender) и вашей реализации OsgiApplicationContextCreator
. Ваш файл MANIFEST.MF должен содержать заголовок манифеста OSGi Фрагмент-хост org.eclipse.gemini.blueprint.extender
. Если вы используете Maven-расслоением-плагин, конфигурация плагин будет выглядеть примерно так:
...
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.5</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Fragment-Host>org.eclipse.gemini.blueprint.extender</Fragment-Host>
<Export-Package>your.package,!*</Export-Package>
<Import-Package>org.osgi.framework,org.springframework.core.env,!*</Import-Package>
</instructions>
</configuration>
</plugin>
...
Ваш файл extender.xml нужно будет определить свой пользовательский OsgiApplicationContextCreator
боб с именем applicationContextCreator
. Файл может выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<util:properties id="extenderProperties">
<prop key="shutdown.wait.time">30000</prop>
</util:properties>
<bean id="applicationContextCreator" class="your.package.MyOsgiApplicationContextCreator"/>
</beans>
Затем разверните узел в вашу среду. Возможно, вам придется перезапустить пакеты OSGi Blueprint (или ваш сервер) в зависимости от того, какой набор этого фрагмента установлен в отношении пакетов Blueprint.