我正在制作Java EE 7应用程序。我需要一些实用程序类,所以我不会编写相同的代码n次。
在必要时使它们成为EJB并进行注入是好的做法,还是使用静态方法使它们成为普通的类更好。
这会如何影响性能?我的理解是,使用EJB改进性能与使用静态方法的普通类一样,只有一个bean可以一次访问一个实用程序方法。另一方面,使它们成为EJB需要Application Server实例化这些实用程序EJB的池,这似乎可以提高性能,购买可能会导致更多的内存使用。
另一方面,我的实用程序类很简单,主要是一个衬里,并且不会有任何复杂的处理,也不会跟踪或依赖于对象的状态。
我的实用程序类的示例如下:
答案 0 :(得分:3)
我的理解是,使用EJB改进性能与使用静态方法的普通类一样,一次只能有一个bean访问一个实用程序方法。
没办法。将Math
视为典型的实用程序类。任意数量的线程可以同时调用Math.sqrt
,并且没有额外的开销。
对于此类任务,您无法击败静态方法的性能。使用其他东西的唯一原因是灵活性。想象一下,sqrt
中有一个稍微不精确但速度更快的Math2
计算方法。如果不修改代码,就无法交换更快的实现。使用EJB,它是微不足道的。
使它们成为EJB需要Application Server实例化那些实用程序EJB的池
我怀疑“pool”在这里是正确的词,因为实用程序类对应于无状态bean,然后单个实例就足够了。
调用bean不能比静态方法调用快,它可能更慢,但不是很多。这不是指导您决定的表现。
对于你的所有三个例子,我都会选择静态方法。您不可能在运行时需要不同的实现,甚至在多个实现之间切换。它可能会发生,但随后你可以轻松适应。