在绑定时在注射器上指定HK2名称

时间:2016-06-07 02:16:47

标签: java hk2

我在我的所有REST微服务中使用HK2进行依赖注入。当我创建数据库访问对象(DAO)时,构造函数通常看起来像

@Inject
public ServiceDao(final DataSource dataSource) {
    ...
}

并且app有一个定义所有绑定的初始化块

@Override
protected void configure(ServiceConfig config, AbstractBinder binder) {
    binder.bind(config.dataSource).to(DataSource.class);
    binder.bind(ServiceDao.class).to(ServiceDao.class).in(Singleton.class);
}

我有一项服务,出于性能原因,需要直接访问其他服务的数据库。我知道我可以修改每个DAO以获得@Named数据源

public ServiceADao(final @Named("ServiceADataSource") DataSource) {

-

binder.bind(config.serviceADataSource)
      .named("ServiceADataSource")
      .to(DataSource.class);

但是,有没有什么办法可以指定每个DAO应该使用哪个DataSource,而无需修改DAO代码本身? (仅使用我在配置块中可用的AbstractBinder?)

0 个答案:

没有答案