2013-06-26 2 views
13

Как установить активный профиль через аннотацию весной?Как установить активный профиль через аннотацию весной?

Например:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = { ApplicationConfig.class }, loader = AnnotationConfigContextLoader.class) 
@ActiveProfiles(profiles = {ApplicationProfiles.TEST}) 
public class CacheManagerTest { 
    ... 
} 

Для теста JUnit это отлично работает, но как я могу инициализировать контекст производства приложений? (У меня нет каких-либо основных методов/сlasses)

+1

Какой тип конфигурации вы используете в приложении prod? Это веб-приложение? –

+0

Привет, Малахов, надеюсь, что мой ответ решает вашу проблему. использование стандартного системного свойства является обычным способом включения профилей в продуктивные среды. Если это сработает для вас, пожалуйста, не забудьте отметить мой ответ как правильный. Приветствия. –

ответ

8

Если вы используете сделать самостоятельное приложение или веб-приложение, вы проходите активный профиль их путь, в соответствии с Spring blog

активации в веб-приложения

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>spring.profiles.active</param-name> 
     <param-value>production</param-value> 
    </init-param> 
</servlet> 

Активация вручную созданного контекста

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); 
ctx.getEnvironment().setActiveProfiles("dev"); 
ctx.load("classpath:/com/bank/config/xml/*-config.xml"); 
ctx.refresh(); 
+0

У меня нет web.xml (это не веб-приложение). Если активация вручную, то идея теряется через профили конфигурации. – Malahov

+0

Первый блок кода неверен. @Profile не активирует профиль, он просто описывает, что эта конфигурация будет активирована, когда активируется профиль, о котором идет речь. –

+0

@Jonathan, удалена неправильная информация о JavaConfig. –

12

Вы можете передать в активном профиле (ов) во время выполнения, используя spring.profiles.active недвижимость:

-Dspring.profiles.active="profile1,profile2" 

См SpringSource blog post о введении профилей.

+0

Вы можете связать документацию по этой функции? –