日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Java同一个类的不同实例_如何创建2个类实例注入不同类的依赖项实现(通过guice)?...

發(fā)布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java同一个类的不同实例_如何创建2个类实例注入不同类的依赖项实现(通过guice)?... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

像這樣的東西?

public class GuiceDependencyExample {

static class DBManager {}

static class DBManagerVendor1 extends DBManager {}

static class DBManagerVendor2 extends DBManager {}

static interface Consumer {

DBManager getDbManager();

}

static @Retention(RetentionPolicy.RUNTIME) @BindingAnnotation @interface DBManager1 {}

static @Retention(RetentionPolicy.RUNTIME) @BindingAnnotation @interface DBManager2 {}

static class ConsumerImpl implements Consumer {

DBManager m_dbm;

@Inject

public ConsumerImpl (DBManager dbm) { m_dbm = dbm; }

public DBManager getDbManager() { return m_dbm; }

}

static abstract class ConsumerModule extends PrivateModule {

private final Class extends Annotation> annotation;

ConsumerModule(Class extends Annotation> annotation) {

this.annotation = annotation;

}

@Override

protected void configure() {

bind(Consumer.class).annotatedWith(annotation).to(ConsumerImpl.class);

expose(Consumer.class).annotatedWith(annotation);

bindDbManager();

}

abstract void bindDbManager();

}

static class Client {

@DBManager1

@Inject

Consumer consumer1;

@DBManager2

@Inject

Consumer consumer2;

}

@Test

public void test() {

Injector i = Guice.createInjector(

new ConsumerModule(DBManager1.class) {

@Override void bindDbManager() {

bind(DBManager.class).toInstance(new DBManagerVendor1());

}

},

new ConsumerModule(DBManager2.class) {

@Override void bindDbManager() {

bind(DBManager.class).toInstance(new DBManagerVendor2());

}

});

Client client = i.getInstance(Client.class);

assertTrue(client.consumer1.getDbManager() instanceof DBManagerVendor1);

assertTrue(client.consumer2.getDbManager() instanceof DBManagerVendor2);

}

總結(jié)

以上是生活随笔為你收集整理的Java同一个类的不同实例_如何创建2个类实例注入不同类的依赖项实现(通过guice)?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。