我知道无状态 bean 不保持会话状态,但我需要的只是一个记录器。我应该在每个被调用的方法中获取记录器吗?如果没有,那么我应该在哪里初始化它?
这是肯定的,如果我编写这样的代码,我不会在使用记录器的某些方法中得到 NullPointerException 吗?
@PostConstruct
public void init() {
logger = Logger.getLogger();
}
我知道无状态 bean 不保持会话状态,但我需要的只是一个记录器。我应该在每个被调用的方法中获取记录器吗?如果没有,那么我应该在哪里初始化它?
这是肯定的,如果我编写这样的代码,我不会在使用记录器的某些方法中得到 NullPointerException 吗?
@PostConstruct
public void init() {
logger = Logger.getLogger();
}
我猜你不希望有一个特定于请求/会话的记录器,对吧?在这种情况下,您甚至可以使用静态类成员来添加记录器并让所有 bean 实例使用相同的记录器。
创建一个具有以下属性的单例类:
getInstance()
方法将给出该类的唯一实例getLogger()
获取记录器的方法在该类的构造函数中初始化记录器,
每次需要使用时都可以从getLogger()方法中获取记录器
尝试:
private static final Logger log = Logger.getLogger();
如果您需要线程特定的值,请注意 Logger 的输出处理程序在每一行中写入线程名称,您应该没问题。