Guice指南-與 JNDI 整合
例如我們需要繫結從 JNDI 得到的物件。我們可以仿照下面的程式碼實現一個可複用的定製的提供者。注意我們注入了 JNDI Context:
package mypackage;
import com.google.inject.*;
import javax.naming.*;
class JndiProvider implements Provider {
@Inject Context context;
final String name;
final Class type;
JndiProvider(Class type, String name) {
this.name = name;
this.type = type;
}
public T get() {
try {
return type.cast(context.lookup(name));
}
catch (NamingException e) {
throw new RuntimeException(e);
}
}
/**
* Creates a JNDI provider for the given
* type and name.
*/
static Provider fromJndi(
Class type, String name) {
return new JndiProvider(type, name);
}
}
import com.google.inject.*;
import javax.naming.*;
class JndiProvider
@Inject Context context;
final String name;
final Class
JndiProvider(Class
this.name = name;
this.type = type;
}
public T get() {
try {
return type.cast(context.lookup(name));
}
catch (NamingException e) {
throw new RuntimeException(e);
}
}
/**
* Creates a JNDI provider for the given
* type and name.
*/
static
Class
return new JndiProvider
}
}
感謝泛型擦除(generic type erasure)技術。我們必須在執行時將依賴傳入類中。你可以省略這一步,但在今後跟蹤型別轉換錯誤會比較棘手(當 JNDI 返回錯誤型別的物件的時候)。
我們可以使用定製的 JndiProvider 來將 DataSource 繫結到來自 JNDI 的一個物件:
我們可以使用定製的 JndiProvider 來將 DataSource 繫結到來自 JNDI 的一個物件:
import com.google.inject.*;
import static mypackage.JndiProvider.fromJndi;
import javax.naming.*;
import javax.sql.DataSource;
...
// Bind Context to the default InitialContext.
bind(Context.class).to(InitialContext.class);
// Bind to DataSource from JNDI.
bind(DataSource.class)
.toProvider(fromJndi(DataSource.class, "..."));
import static mypackage.JndiProvider.fromJndi;
import javax.naming.*;
import javax.sql.DataSource;
...
// Bind Context to the default InitialContext.
bind(Context.class).to(InitialContext.class);
// Bind to DataSource from JNDI.
bind(DataSource.class)
.toProvider(fromJndi(DataSource.class, "..."));
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-217873/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Guice與DWR整合GUI
- Guice指南-用Guice實現依賴注入GUI依賴注入
- Guice指南-手工依賴注入GUI依賴注入
- Guice指南-入門認識GUI
- Guice指南-簡單工廠模式GUI模式
- Guice指南-自舉(Bootstrapping)你的應用GUIbootAPP
- Guice 示例GUI
- Google Guice 與 Noear Solon 的簡單對照GoGUI
- 向量資料庫與LLM的整合:實踐指南資料庫
- ObjectBox 整合指南Object
- Elasticsearch 中的 GuiceElasticsearchGUI
- Guice學習心得GUI
- 初次認識GuiceGUI
- JNDI詳解
- JNDI簡介
- Jndi使用好處,與簡單例項【Tomcat】單例Tomcat
- jndi與java reference到底有什麼區別?Java
- JNDI學習(一) Tomcat7 配置JNDI (JDBC datasource)TomcatJDBC
- Guice 依賴繫結GUI
- Google Guice的Binder介面GoGUI
- 例項認識GuiceGUI
- JNDI注入工具改造
- Java之JNDI注入Java
- JNDI全面總結
- 重磅!Vertica整合Apache Hudi指南Apache
- ITCAM for Websphere v6.0與ITM v6.1整合的快速指南Web
- 祝賀Guice拿了Jolt AwardGUI
- 再借斧子的例子說一說spring與guice的區別SpringGUI
- Java安全之JNDI注入Java
- jndi資料來源
- java JNDI 注入學習Java
- 為什麼選擇Guice框架GUI框架
- 轉享: 在Scala中使用GuiceGUI
- How does Guice compare to Spring ?GUISpring
- Guice,叫我怎能不愛你?GUI
- jndi配置資料來源
- Tomcat 6 --- JNDI詳解Tomcat
- Guice:Java IOC框架 挑戰SpringGUIJava框架Spring