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 楼答案
似乎您真正想要记录的是服务对象的配置,所以直接在对象的构造函数中记录。通常会在调试或跟踪级别记录这些信息,然后保留日志语句,以便在以后需要时打开它们
注意,除非传递到方法调用中的项计算起来很昂贵,否则没有必要使用
log.is<Level>Enabled
;这就是使用{}
特性而不是字符串连接的全部原因,也是为什么不应该使用toString()
而应该让记录器在它决定需要时这样做的原因