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();
            }
        }

    }