我試圖實現的是具有帶動態name
參數的@Resource
。具體來說,我想用@Resource(name = "{JNDI_NAME_PARAM}")
注入一個DataSource
對象,因爲我們可以在應用程序服務器中配置許多數據源,並且應用程序使用的數據源在.xml或.config文件中定義。由於在編譯期間我不知道數據源的名稱,所以我需要能夠在運行時獲得它。現在我正在注入一個自定義的@ApplicationScoped
bean,它使用InitialContext().lookup()
在其@PostConstruct
方法中創建一個數據源。不過,我很好奇(主要是因爲它更優雅),以至於如何使用@Resource
註釋實現注射。使用具有動態參數的java註釋
我可以在應用程序服務器中創建一個自定義的默認JNDI名稱,並在需要時更改它指向的數據源,但這不能用於多個部署,並且很多時候我們已經部署了兩次應用程序,一次在測試中數據庫,並且一次在生產數據庫中,因此JNDI指向同時在兩個不同的數據源。
好,回答您的標題的「問題」:你絕對不能有不固定在編譯註釋值時間。但是,這並不意味着你使用的任何東西都沒有非註釋方式來注入事物。 – immibis