Java 使用配置切换秒表的功能

Java 使用配置切换秒表的功能,java,spring,spring-boot,jakarta-ee,stopwatch,Java,Spring,Spring Boot,Jakarta Ee,Stopwatch,是否有任何方法可以使用application.yml或application.properties中的配置控制Spring util包的秒表,以便在需要时切换(打开/关闭)该功能 另外,我知道文档中指出,它不是线程安全的,也不打算用于生产。您可以始终使用spring管理对象,并将其设置为条件对象,以便该对象是否需要生成 做一些类似于: public class StopWatchOnOffCondition implements Condition { @Override

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


另外,我知道文档中指出,它不是线程安全的,也不打算用于生产。

您可以始终使用spring管理对象,并将其设置为条件对象,以便该对象是否需要生成

做一些类似于:

    public class StopWatchOnOffCondition implements Condition {

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata arg1) {

        return !"false".equalsIgnoreCase(context.getEnvironment().getProperty("stopwatch.enabled"));
}
    @Conditional(value = { StopWatchOnOffCondition.class })
    @Service
    public class StopWatchService { ...
}
当您为秒表创建bean时,您可以执行以下操作:

    public class StopWatchOnOffCondition implements Condition {

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata arg1) {

        return !"false".equalsIgnoreCase(context.getEnvironment().getProperty("stopwatch.enabled"));
}
    @Conditional(value = { StopWatchOnOffCondition.class })
    @Service
    public class StopWatchService { ...
}
属性:stopwatch.enabled将驻留在applicaton.properties文件中


阅读更多关于
@Conditional

如何以及在何处调用matches()方法的信息?当您使用@Conditional annotation时,spring框架调用matches()方法此方法的问题是,我有使用秒表的spring和普通java模块。在普通java中,使用@Conditional创建bean是不好的。你的意思是说有些对象由spring管理,有些则使用new关键字自己管理?这不是一个理想的设置(让spring始终管理所有依赖项)。您可以在这里做一件事,即自动连接布尔标志stopwatch.enabled并创建一个util方法(static),该方法可以查看此标志是否已关闭,然后不要使用该功能(在纯java代码中),否则请使用它。幸运的是,您尝试过此方法吗?