2016-05-09 95 views
-1

創建應用程序範圍的工廠或者在使用工廠模式創建對象時它應該是請求作用域更好?CDI @ApplicationScoped vs @RequestScoped和工廠模式

應用程序範圍的bean只創建一次,但使用內存空間。爲每個調用創建請求作用域Bean,但僅在生命週期中使用內存空間。請求範圍的bean可以創建多次。

@Named 
@ApplicationScoped 
public class SomeObjectFactory { 
    public SomeObject createObject() { 
     // do some stuff 
    } 
} 

有什麼最佳實踐嗎?

回答

0

我認爲你不會爲這個問題找到一個非常確定的答案。原因在於它確實取決於您的應用程序:

  • bean是否應該僅在請求的使用期限內存在?如果是這樣,請使用@RequestScoped

  • bean是否應該在應用程序的生命週期中存在,並且應該在所有請求之間共享bean的狀態?如果是這樣,請使用@ApplicationScoped

+0

謝謝您的回答。我想,沒有必要共享一個工廠實例。是否有任何問題來創建大量的應用程序範圍的bean? –

+1

@LarsMichaelis你可以在同一個類中有很多生產者方法,所以它會減少類的數量。然而,比包含生產者方法的類的範圍更重要的是正在生產的bean的範圍。 –