根据 Robert C. Martin 的干净代码,方法应该有一个小签名。最好的情况是完全没有参数的方法。相反,建议使用状态变量。这真的很有用。但是无状态 session bean 呢?
这个名字有点令人困惑,因为 SLSB 可以有状态。您只需要进行内务处理,这样您就不会使用之前 EJB 调用的状态。
回到干净的代码:我也喜欢在 SLSB 中使用实例变量。这工作正常,如果您足够小心,您不会遇到任何状态不一致的问题,因为状态在每次公共(public)方法调用时都会被覆盖。
到目前为止一切顺利。但是,如果用过的 bean 返回到池中会怎样?它带着它的状态。根据状态的大小,这可能是真正的内存泄漏。 JBoss 对 bean 非常慷慨,并生成了很多 bean,导致了一些严重的内存消耗——没有任何好处。
因此,一种方法是在 bean 方法存在之前清理状态并将 bean 返回到池中。但在我看来,这是应该避免的无用代码。
有没有合适的方法来处理这个问题?这种情况下的最佳做法是什么?
最佳答案
让生活变得简单,只需传入参数。即使您可以做其他事情,从无状态 EJB 的意图来看,很明显您不应该。
以零参数为目标的 FWIW 对我来说似乎很愚蠢。是的,以少数为目标,但是为了自己的利益而努力为零是愚蠢的。
关于java - 干净的代码、无状态 session bean 和私有(private)状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10299592/