有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Spring Boot中是否有一个最佳实践来记录用@ConfigurationProperties注释的属性bean?

希望你做得很好。 我将直截了当地说:

我正在使用SpringAOP的SpringBoot应用程序中处理日志问题。 它工作得很好,但今天我发现我需要从@ConfigurationProperties-注释bean中记录一些属性(至少出于调试目的)

我尝试使用切入点来捕获类构造函数及其setter(Spring使用它来用反射填充字段)。它不起作用,我相信这是由于反射的使用

我使用以下代码解决了日志记录问题:

@Configuration
@Getter
@Setter
@ConfigurationProperties(prefix = "my.props")    
@Slf4j
public class MyProps {
    private String url;
    private String tableName;

    @PostConstruct
    void logSomeFields() {
        if (log.isInfoEnabled()) {
            log.info("The URL is '{}' and the table name is '{}'",
                url,
                tableName
            );
        }
    }
}

应用程序。yml:

my:
  props:
    url: "http://localhost:8500"
    tablename: "test_table"

因为我假设在属性bean中放入日志代码是一种糟糕的做法, 你能告诉我是否有办法使用SpringAOP,这样我就可以把日志代码移出这个类了吗

先谢谢你

问候


共 (1) 个答案

  1. # 1 楼答案

    似乎您真正想要记录的是服务对象的配置,所以直接在对象的构造函数中记录。通常会在调试或跟踪级别记录这些信息,然后保留日志语句,以便在以后需要时打开它们

    注意,除非传递到方法调用中的项计算起来很昂贵,否则没有必要使用log.is<Level>Enabled;这就是使用{}特性而不是字符串连接的全部原因,也是为什么不应该使用toString()而应该让记录器在它决定需要时这样做的原因