gpt4 book ai didi

java - CDI:静态记录器与注入(inject)?

转载 作者:行者123 更新时间:2023-12-05 07:29:04 24 4
gpt4 key购买 nike

免责声明:此问题并非旨在“基于意见”。我正在寻找强大的优点和缺点。

在 CDI 应用程序中,更常规和更适合使用的是:静态记录器:
private static final Logger LOGGER = LoggerFactory.getLogger...;

或者注入(inject)它有一个特定的生产者?
@注入(inject)
私有(private)记录器记录器;

前者的一个优点是我们可以创建自己的 LoggerFactory 包装器(出于某些目的)并在所有地方使用它,而不必担心有人滥用了另一个工厂。但是这种方法还有其他缺点/优点吗?什么更“规范”?

最佳答案

由于所有 CDI Bean 都是轻量级代理,因此没有真正的缺点。关于记录器是单例的评论并不完全准确,具体取决于您如何实现它。以下将根据目标注入(inject)正确的记录器实例:

    @Produces
@Dependent
public Logger createLogger(final InjectionPoint injectionPoint) {
Class<?> declaringClass = injectionPoint.getMember().getDeclaringClass();
return LoggerFactory.getLogger(declaringClass);
}

优势真正归结为测试...您现在可以模拟注入(inject)并仅测试您的实际业务代码。静态函数通常很难模拟,这提供了一种不需要处理它们的非常干净的方法。

关于java - CDI:静态记录器与注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52952045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com