gpt4 book ai didi

java - @InjectLogger 上的 NullPointerException

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:25 26 4
gpt4 key购买 nike

我将其添加到我的项目 POM 中:

    <dependency>
<groupId>org.apache.onami.logging</groupId>
<artifactId>org.apache.onami.logging.log4j2</artifactId>
<version>3.4.0-incubating</version>
</dependency>

并执行@InjectLogger

@InjectLogger
Logger logger;

logger.info("Created"); // NPE here.

可能是什么问题?

最佳答案

您必须安装新的 Log4j2LoggingModule( Matchers.any() )。参见

http://onami.incubator.apache.org/logging/log4j2.html

我个人更喜欢带有 logback 的 slf4j,但更喜欢 ymmv。

如果您仍然遇到 NPE:

字段注入(inject)发生在初始化 block 和构造函数运行之后。只有在那之后,字段才不会为空。如果你之前引用了字段,那么你会得到 NPE。方法注入(inject)发生在字段注入(inject)之后。您可以使用方法注入(inject)来模拟 @PostConstruct 或使用专用注释,例如 onami-lifecycle 中的注释。 .

@InjectLogger Logger log;

CtorInjectedStuff stuff;

@Inject Foo(CtorInjectedStuff stuff){
this.stuff = stuff;
log.info("created"); // null as fields are not yet injected
}

@Inject public void postConstruct(){
log.info("post construct"); // works
}

遗憾的是你做不到

@Inject Foo(CtorInjectedStuff stuff, @InjectLogger Logger log){
...
}

as custom injections work only after instance is created .

注意:@InjectLogger 支持是使用前面提到的自定义注入(inject)来实现的 MembersInjector .

恕我直言:注入(inject)记录器并不能提供足够的附加值来保证在简单的静态字段上带来额外的麻烦,但又是 ymmv。

关于java - @InjectLogger 上的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16803933/

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