【问题标题】:Are there anyway to disable annotation in spring4?无论如何在spring4中禁用注释?
【发布时间】:2016-12-23 11:42:30
【问题描述】:

我有一个问题,可能很简单,但我找不到解决方案。

我正在使用spring boot,并在代码中添加了一些注释,如下所示:

@EnableEurekaClient
@SpringBootApplication
@EnableCaching
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

但是在其他一些环境中,比如在生产环境中,我们想去掉EurekaClient,但是我不想针对每个环境手动去掉,而是想用环境变量或者命令行参数来控制行为。我想这样做:

@EnableEurekaClient(Enabled = {EnableEureka})
@SpringBootApplication
@EnableCaching
public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
}

然后我可以轻松启动这个应用程序而无需接触代码。

谁能告诉我这是否可能?如果是这样,我该怎么做?

谢谢

【问题讨论】:

    标签: java spring spring-boot spring-cloud spring-annotations


    【解决方案1】:

    您希望与Spring Boot Profiles 合作。将@EnableEurekaClient 拆分为另一个@Configuration 类,并将@Profile("eureka-client") 添加到该类。然后在启动应用程序时,您可以为生产环境以外的环境设置-Dspring.profiles.active=eureka-client

    例子:

    @SpringBootApplication
    @EnableCaching
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
    
    @Configuration
    @EnableEurekaClient
    @Profile("eureka-client")
    public class EurekaClientConfiguration {
    }
    

    【讨论】:

    • 你刷新了我的大脑!谢谢。将对个人资料进行第二次阅读。
    • 您能否更详细地说明这一点:将 EnableEurekaClient 拆分为另一个 Configuration 类,并将 Profile("eureka-client") 添加到该类中。我不知道该怎么做。谢谢
    • 添加了回答示例。
    【解决方案2】:

    我更喜欢这种方法,因为您不必创建额外的配置文件:

    @Configuration
    @EnableEurekaClient
    @ConditionalOnProperty(name = "application.enabled", havingValue = "true", matchIfMissing = false)
    public class EurekaClientConfiguration {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      相关资源
      最近更新 更多