【问题标题】:Toggling feature of stopwatch using configuration使用配置切换秒表功能
【发布时间】:2018-05-30 06:25:06
【问题描述】:

有什么方法可以使用 application.yml 或 application.properties 中的配置来控制 Spring util 包的秒表,以便在需要时切换(打开/关闭)该功能?

附:我知道文档声明它不是为线程安全而设计的,也不打算在生产中使用。

【问题讨论】:

    标签: java spring spring-boot jakarta-ee stopwatch


    【解决方案1】:

    您始终可以使用 spring 管理一个对象,也可以使其有条件,以便该对象是否需要创建。

    执行以下操作:

        public class StopWatchOnOffCondition implements Condition {
    
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata arg1) {
    
            return !"false".equalsIgnoreCase(context.getEnvironment().getProperty("stopwatch.enabled"));
    }
    

    当您为 StopWatch 创建 bean 时,您可以执行以下操作:

        @Conditional(value = { StopWatchOnOffCondition.class })
        @Service
        public class StopWatchService { ...
    }
    

    属性:stopwatch.enabled 将驻留在您的 applicaton.properties 文件中。

    阅读更多关于@Conditionalhere

    【讨论】:

    • 如何以及在何处调用matches() 方法?
    • 使用@Conditional注解时spring框架调用matches()方法
    • 这种方法的问题是我有使用秒表的 spring 和普通 java 模块。在纯 Java 中,使用 @Conditional 创建 bean 并不好。
    • 你的意思是说有些对象是spring管理的,有些是你自己用new关键字管理的?这不是一个理想的设置(让 spring 始终管理所有依赖项)。您可以在这里做一件事,自动装配布尔标志 stopwatch.enabled 并创建一个 util 方法(静态),该方法可以查看此标志是否关闭,然后不使用该功能(在纯 java 代码中),否则使用它。
    • 运气好,你试过了吗?
    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多