任何人都可以解釋在Java EE 6應用程序中實現Singleton的完整過程嗎?我假設我不應該通過聲明靜態變量的典型方式創建單例,而應該使用@Singleton
註釋?我必須這樣做嗎?Java EE 6和單身人士
難道僅僅是宣佈它@Singleton
,就是這樣的情況?我需要再去上課嗎?
我怎麼那麼需要做的訪問我的其它類的單?
任何人都可以解釋在Java EE 6應用程序中實現Singleton的完整過程嗎?我假設我不應該通過聲明靜態變量的典型方式創建單例,而應該使用@Singleton
註釋?我必須這樣做嗎?Java EE 6和單身人士
難道僅僅是宣佈它@Singleton
,就是這樣的情況?我需要再去上課嗎?
我怎麼那麼需要做的訪問我的其它類的單?
的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";
}
...
}
難道僅僅是宣佈它@辛格爾頓,就是這樣的情況?
是的!而已!像其他任何Javabean一樣設計類。
不要但是請注意,這確實是不一樣的GoF的Singleton design pattern。相反,它正是"just create one" pattern。也許這就是你混亂的根源。無可否認,註釋名稱的選擇稍差,在JSF和CDI中使用名稱@ApplicationScoped
。
做什麼,然後我需要做的訪問我的其它類的單?
用同樣的方法,因爲每個其他EJB,通過注射它作爲@EJB
:
@EJB
private YourEJB yourEJB;
這仍然沒有真正回答我的第一個問題,是不是真的需要? –
@Sly更新了我的答案。你只需要創建一個普通的bean,沒有任何單例,靜態變量,修飾構造函數和相關的東西。 –