我正在試驗Java依賴注入。這裏討論關於jndi資源被連線的許多問題。但我認爲,可以使用@Resource
註釋來連接java類。我有一個簡單的servlet,在這個servlet中我有兩個使用CDI連接的屬性。我正在使用Tomcat6,Servlet 2.5和Weld配置。如何在servlet(或任何其他Java類)中使用@Resource註釋?
servlet代碼:
@Inject
private HikariConnectionProperties hikariConnectionProperties;
@Resource(name = "connectionProvider")
private IConnectionProvider connectionProvider;
但是我得到的編譯代碼,部署。但是,當有相應的servlet的請求時,我得到javax.naming.NameNotFoundException: Name connectionProvider is not bound in this Context
。
但是,我對ConnectionProvider
類有@Named
註釋。 對於這兩個字段,相同的配置適用於@Inject
。
所以,我的第一個問題是我該如何解決這個問題?是否有任何方法可以指定特定注入的範圍(僅使用JSR註釋),而不使用Spring的@Scope
?任何示例都非常有幫助,因爲我是CDI的新手。
您可以看到[此鏈接](https://docs.jboss.org/cdi/spec/1.0/html/implementation.html#resources)'ConnectionProvider'不應該是'@ Named',它應該是' @ResourceContext'等 – Everv0id 2014-12-13 13:50:35
@ Everv0id資源也不起作用 – phoenix 2014-12-13 13:55:22
那麼,如果從注入點中刪除'(name =「connectionProvider」)'或將其添加到'ConnectionProvider'聲明會發生什麼? – Everv0id 2014-12-13 14:14:35