Java EE应用程序中的实用程序类应该是EJB还是具有静态方法的类

时间:2017-11-19 22:42:19

标签: java performance java-ee ejb

我正在制作Java EE 7应用程序。我需要一些实用程序类,所以我不会编写相同的代码n次。

在必要时使它们成为EJB并进行注入是好的做法,还是使用静态方法使它们成为普通的类更好。

这会如何影响性能?我的理解是,使用EJB改进性能与使用静态方法的普通类一样,只有一个bean可以一次访问一个实用程序方法。另一方面,使它们成为EJB需要Application Server实例化这些实用程序EJB的池,这似乎可以提高性能,购买可能会导致更多的内存使用。

另一方面,我的实用程序类很简单,主要是一个衬里,并且不会有任何复杂的处理,也不会跟踪或依赖于对象的状态。

我的实用程序类的示例如下:

  • 检查字符串是否包含数字或特殊字符
  • 检查电子邮件地址是否正确
  • 使用默认值(statusCode,message)创建新的Response对象(此Response对象用作Web Services作为返回类型)

1 个答案:

答案 0 :(得分:3)

  

我的理解是,使用EJB改进性能与使用静态方法的普通类一样,一次只能有一个bean访问一个实用程序方法。

没办法。将Math视为典型的实用程序类。任意数量的线程可以同时调用Math.sqrt,并且没有额外的开销。

对于此类任务,您无法击败静态方法的性能。使用其他东西的唯一原因是灵活性。想象一下,sqrt中有一个稍微不精确但速度更快的Math2计算方法。如果不修改代码,就无法交换更快的实现。使用EJB,它是微不足道的。

  

使它们成为EJB需要Application Server实例化那些实用程序EJB的池

我怀疑“pool”在这里是正确的词,因为实用程序类对应于无状态bean,然后单个实例就足够了。

调用bean不能比静态方法调用快,它可能更慢,但不是很多。这不是指导您决定的表现。

对于你的所有三个例子,我都会选择静态方法。您不可能在运行时需要不同的实现,甚至在多个实现之间切换。它可能会发生,但随后你可以轻松适应。