[英]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的池,購買可能會導致更多的內存使用。
另一方面,我的實用程序類很簡單,大多是一個內襯,不會進行任何復雜的處理,也不會跟蹤或依賴於對象的狀態。
我的實用程序類的示例如下:
我的理解是,像使用靜態方法的普通類一樣,使它們成為EJB可以提高性能,一次只能有一個bean可以訪問一個實用程序方法。
沒門。 將Math
視為典型的實用程序類。 任何數量的線程都可以同時調用Math.sqrt
,並且沒有增加額外的開銷。
對於此類任務,您無法超越靜態方法的性能。 使用其他東西的唯一原因是靈活性。 想象一下,在Math2
有一種稍微不精確但更快的sqrt
計算方法。 沒有修改代碼就無法交換到更快的實現的方法。 對於EJB,這將是微不足道的。
使它們成為EJB將需要Application Server實例化那些實用程序EJB的池
我懷疑“池”在這里是正確的詞,因為實用程序類與無狀態Bean相對應,然后一個實例就足夠了。
調用bean不能比靜態方法調用快,它可能要慢一些,但不多。 決定您決定的不是性能。
對於您的所有三個示例,我都會使用靜態方法。 不可能需要一個不同的實現,甚至在運行時在多個實現之間切換。 它可能會發生,但是您可以輕松適應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.