2013-08-27 63 views
4

任何人都可以解釋在Java EE 6應用程序中實現Singleton的完整過程嗎?我假設我不應該通過聲明靜態變量的典型方式創建單例,而應該使用@Singleton註釋?我必須這樣做嗎?Java EE 6和單身人士

難道僅僅是宣佈它@Singleton,就是這樣的情況?我需要再去上課嗎?

我怎麼那麼需要做的訪問我的其它類的單?

回答

2

javax.ejb.Singleton註釋用於指定企業bean的實現類是單會話bean。

此信息告訴EJB容器,而不是創建這個bean的多重背景,只創建一個單一實例。否則,它只是一個普通的bean類。在這裏閱讀更多:

http://docs.oracle.com/javaee/6/tutorial/doc/gipvi.html

您不必創建一個靜態變量,並做相關的所有東西,使其單。正如這裏所說的寫一個普通的bean和容器將實例化只是其中的物體的護理:

@Startup 
@Singleton 
public class StatusBean { 
    private String status; 

    @PostConstruct 
    void init { 
    status = "Ready"; 
    } 
    ... 
} 
+0

這仍然沒有真正回答我的第一個問題,是不是真的需要? –

+0

@Sly更新了我的答案。你只需要創建一個普通的bean,沒有任何單例,靜態變量,修飾構造函數和相關的東西。 –

9

難道僅僅是宣佈它@辛格爾頓,就是這樣的情況?

是的!而已!像其他任何Javabean一樣設計類。

不要但是請注意,這確實是不一樣的GoF的Singleton design pattern。相反,它正是"just create one" pattern。也許這就是你混亂的根源。無可否認,註釋名稱的選擇稍差,在JSF和CDI中使用名稱@ApplicationScoped


做什麼,然後我需要做的訪問我的其它類的單?

用同樣的方法,因爲每個其他EJB,通過注射它作爲@EJB

@EJB 
private YourEJB yourEJB;