[英]Using java annotation with dynamic parameter
我想要實現的是擁有一個帶有動態name
參數的@Resource
。 具體來說,我想使用@Resource(name = "{JNDI_NAME_PARAM}")
注入DataSource
對象,因為我們可以在應用程序服務器中配置許多數據源,並且應用程序使用的數據源在.xml或.config文件中定義。 由於在編譯期間我不知道數據源的名稱,因此我需要能夠在運行時獲取它。 現在,我正在注入一個自定義的@ApplicationScoped
bean,該bean使用InitialContext().lookup()
在其@PostConstruct
方法中創建數據源。 但是我對如何使用@Resource
注釋實現注入感到好奇(主要是因為它更優雅)。
我可以在應用服務器中創建一個自定義的默認JNDI名稱,並在需要時更改它指向的數據源,但這不能用於多個部署,並且很多時候我們已經將應用部署了兩次,一次在測試數據庫中,一次在Windows中。生產數據庫,因此JNDI同時指向兩個不同的數據源。
您可以使用基於方法的進樣。 它需要使用setter方法(setMyDB)。
public class Test {
public javax.sql.DataSource myDB;
@Resource(name="student")
private void setMyDB(javax.sql.DataSource ds) {
myDB = ds;
}
}
如果名稱已知,我們可以在以下位置擁有多個資源
@Resources({
@Resource(your type)
@Resource(your type)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.