Spring 配置文件初始化组件无效
Spring component initialization by Profile is not working
我有下面的 class 只有当活动配置文件不是主配置文件时才应该初始化它。但即使活动配置文件是主配置文件,它也会被执行。如何实施?我正在使用 Spring 引导和 Spring 4.
@Component
@Scope(value= "singleton")
@Profile("!master")
public final class SystemStartUp implements ApplicationListener<ContextRefreshedEvent>, Ordered {
}
There's no support for @Profile
for ApplicationListener or @EventListener
就此而言。 @Profile
主要与@Configuration
结合使用。
当Spring看到一个实现了ApplicationListener接口的class时,它会自动注册监听器。
如果您想在系统启动时执行一些基于条件的操作,您可能需要探索不同的方法。
我以编程方式实现了解决方案。
public void onApplicationEvent(ContextRefreshedEvent event) {
Environment env = ApplicationContextProvider.getApplicationContext().getBean(Environment.class);
if(env.getActiveProfiles() != null) {
if(env.getActiveProfiles().length == 1 && Arrays.binarySearch(env.getActiveProfiles(), "master") == -1 ) {
initialize();
}
}
}
我有下面的 class 只有当活动配置文件不是主配置文件时才应该初始化它。但即使活动配置文件是主配置文件,它也会被执行。如何实施?我正在使用 Spring 引导和 Spring 4.
@Component
@Scope(value= "singleton")
@Profile("!master")
public final class SystemStartUp implements ApplicationListener<ContextRefreshedEvent>, Ordered {
}
There's no support for @Profile
for ApplicationListener or @EventListener
就此而言。 @Profile
主要与@Configuration
结合使用。
当Spring看到一个实现了ApplicationListener接口的class时,它会自动注册监听器。
如果您想在系统启动时执行一些基于条件的操作,您可能需要探索不同的方法。
我以编程方式实现了解决方案。
public void onApplicationEvent(ContextRefreshedEvent event) {
Environment env = ApplicationContextProvider.getApplicationContext().getBean(Environment.class);
if(env.getActiveProfiles() != null) {
if(env.getActiveProfiles().length == 1 && Arrays.binarySearch(env.getActiveProfiles(), "master") == -1 ) {
initialize();
}
}
}