簡體   English   中英

Java EE應用程序中的實用程序類應該是EJB的類還是具有靜態方法的類

[英]Should utility classes in Java EE application be EJB's or classes with static methods

我正在制作Java EE 7應用程序。 我需要一些實用程序類,因此我不會寫相同的代碼n次。

使它們成為EJB並在必要時進行注入是一種好習慣,還是使它們具有靜態方法成為普通類更好。

這將如何影響性能? 我的理解是,像使用靜態方法的普通類一樣,使它們成為EJB可以提高性能,一次只能有一個bean可以訪問一個實用程序方法。 另一方面,使它們成為EJB將需要Application Server實例化那些似乎可以提高性能的實用程序EJB的池,購買可能會導致更多的內存使用。

另一方面,我的實用程序類很簡單,大多是一個內襯,不會進行任何復雜的處理,也不會跟蹤或依賴於對象的狀態。

我的實用程序類的示例如下:

  • 檢查字符串是否不包含數字或特殊字符
  • 檢查電子郵件地址是否正確
  • 使用默認值(statusCode,消息)創建新的Response對象(此Response對象用於Web服務作為返回類型)
  • 等等

我的理解是,像使用靜態方法的普通類一樣,使它們成為EJB可以提高性能,一次只能有一個bean可以訪問一個實用程序方法。

沒門。 Math視為典型的實用程序類。 任何數量的線程都可以同時調用Math.sqrt ,並且沒有增加額外的開銷。

對於此類任務,您無法超越靜態方法的性能。 使用其他東西的唯一原因是靈活性。 想象一下,在Math2有一種稍微不精確但更快的sqrt計算方法。 沒有修改代碼就無法交換到更快的實現的方法。 對於EJB,這將是微不足道的。

使它們成為EJB將需要Application Server實例化那些實用程序EJB的池

我懷疑“池”在這里是正確的詞,因為實用程序類與無狀態Bean相對應,然后一個實例就足夠了。

調用bean不能比靜態方法調用快,它可能要慢一些,但不多。 決定您決定的不是性能。

對於您的所有三個示例,我都會使用靜態方法。 不可能需要一個不同的實現,甚至在運行時在多個實現之間切換。 它可能會發生,但是您可以輕松適應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM