簡體   English   中英

使用帶有動態參數的Java批注

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM