如何在以编程方式创建Spring上下文时设置活动配置文件?

5n0oy7gb  于 2023-04-28  发布在  Spring
关注(0)|答案(2)|浏览(127)

**tl;dr:**如何在提供active profile的同时,基于基于annotation-based configuration class创建Spring context?

我尝试使用一个类创建一个Spring上下文,该类具有使用注解指定的配置。

org.springframework.context.ApplicationContext context = 
    new org.springframework.context.annotation.AnnotationConfigApplicationContext( com.initech.ReleaserConfig.class );

然而,当它启动时,它会崩溃,因为它找不到所需的bean,但该bean确实存在:尽管仅在某个简档"myProfile"下。
如何指定活动配置文件?我有一种感觉,我需要使用一个org.springframework.context.annotation.AnnotationConfigApplicationContext(org.springframework.beans.factory.support.DefaultListableBeanFactory)构造函数,但我不确定哪一个合适。
PS-我没有使用Sping Boot ,但我使用的是Spring 4。2.4.RELEASE.

cu6pst1q

cu6pst1q1#

这个应该可以了..

final AnnotationConfigApplicationContext appContext =  new AnnotationConfigApplicationContext();
appContext.getEnvironment().setActiveProfiles( "myProfile" );
appContext.register( com.initech.ReleaserConfig.class );
appContext.refresh();
t8e9dugd

t8e9dugd2#

如果您需要classpath:resources/application-${spring.profiles.active}。yml要正常工作,在刷新之前设置系统属性是一条路。

AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.getEnvironment().getSystemProperties().put(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "dev");
applicationContext.scan("com.sample");
applicationContext.refresh();

相关问题