Java 我可以在无状态会话bean中使用实例变量吗?
我知道无状态bean不维护会话状态,但我需要的只是一个记录器。我应该在调用的每个方法中都使用logger吗?如果没有,我应该在哪里初始化它 这是否可以确定,如果我编写这样的代码,在使用logger的方法中不会得到NullPointerExceptionJava 我可以在无状态会话bean中使用实例变量吗?,java,jakarta-ee,javabeans,stateless,Java,Jakarta Ee,Javabeans,Stateless,我知道无状态bean不维护会话状态,但我需要的只是一个记录器。我应该在调用的每个方法中都使用logger吗?如果没有,我应该在哪里初始化它 这是否可以确定,如果我编写这样的代码,在使用logger的方法中不会得到NullPointerException @PostConstruct public void init() { logger = Logger.getLogger(); } 我猜您不希望有一个特定于请求/会话的记录器,对吗?在这种情况下,您甚至可以使用静态类成员添加记录器
@PostConstruct
public void init() {
logger = Logger.getLogger();
}
我猜您不希望有一个特定于请求/会话的记录器,对吗?在这种情况下,您甚至可以使用静态类成员添加记录器,并让所有bean实例使用相同的记录器。创建一个具有以下属性的单例类:
getInstance()
方法,该方法将给出类的唯一实例每次需要使用记录器时,您都可以从getLogger()方法获取记录器尝试:
private static final Logger log = Logger.getLogger();
如果您需要特定于线程的值,请注意记录器的输出处理程序会在每一行中写入线程名称,这样您就可以了。这不是“有争议”状态,而是“对话”状态,尽管该主题可能有争议:)谢谢,Thomas!我真的为我的英语感到抱歉。