@BindingAnnotation
(1) 如果 一个接口只有一个实现,使用这种连接注解就可以:
bind(XXInterface.class).to(XXImpl.class); @Inject
XXInterface xxInterface (2) 当一个接口由多个实现的时候,上面的@Inject根本不知道怎么绑定,这个时候可以使用自定义的绑定注解BindingAnnotation
。
public class AnimalModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(Animal.class).annotatedWith(Cat.class).toInstance(new Animal("Meow"));
        bind(Animal.class).annotatedWith(Dog.class).toInstance(new Animal("Woof"));
    }
    @Provides
    List<Animal> provideAnimalList(@Cat Animal cat, @Dog Animal dog) {
        List<Animal> animals = new ArrayList<Animal>();
        animals.add(cat);
        animals.add(dog);
        return animals;
    }
    public static void main(String[] args) {
        List<Animal> animals = Guice.createInjector(new AnimalModule()).getInstance(Key.get(new TypeLiteral<List<Animal>>() {
        }));
        for (Animal animal : animals) {
            System.out.println(animal);
        }
    }
}
Annotations : 如下的Cat和Dog是两个绑定注解。
@Retention(value = RetentionPolicy.RUNTIME)
@BindingAnnotation
public @interface Cat {
}
@Retention(value = RetentionPolicy.RUNTIME)
@BindingAnnotation
public @interface Dog {
}Output :
Animal{sound='Meow'}
Animal{sound='Woof'}@BindingAnnotation的更多相关文章
- java轻量级IOC框架Guice
		Google-Guice入门介绍(较为清晰的说明了流程):http://blog.csdn.net/derekjiang/article/details/7231490 使用Guice,需要添加第三方 ... 
- Effective Java 56 Adhere to generally accepted naming conventions
		Typographical naming conventions Identifier Type Type Examples Package com.google.inject, org.joda.t ... 
- Google Guice结合模式
		于Guice于,喷油器装配工作是一个对象图,当请求类型实例,喷油器根据推断对象如何映射到创建的实例.解决依赖.要确定如何解决的依赖就需要配置喷油器结合的方式. 要创建绑定(Binding)对象,能够继 ... 
- Effective Java 第三版——68. 遵守普遍接受的命名约定
		Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ... 
- Guice 依赖绑定
		Guice 依赖绑定 连接绑定(Linked Bingdings) 连接绑定是 Guice 最基本的一种绑定方式.这种绑定方式我们需要在自己定义的 Module 的 configure() 中编写绑定 ... 
- Google-Guice入门介绍
		原地址:http://blog.csdn.net/derekjiang/article/details/7231490 一. 概述 Guice是一个轻量级的DI框架.本文对Guice的基本用法作以介绍 ... 
- 解读超轻量级DI容器-Guice与Spring框架的区别【转载】
		依赖注入,DI(Dependency Injection),它的作用自然不必多说,提及DI容器,例如spring,picoContainer,EJB容器等等,近日,google诞生了更轻巧的DI容器… ... 
- Guice 学习(五)多接口的实现( Many  Interface Implementation)
		1.接口 /* * Creation : 2015年6月30日 */ package com.guice.InterfaceManyImpl; public interface Service { p ... 
- Guice 4.1教程
		Guice是Google开发的一个开源轻量级的依赖注入框架,运行速度快,使用简单. 项目地址:https://github.com/google/guice/ 最新的版本是4.1,本文基于此版本. 0 ... 
随机推荐
- 2018-2019-2 网络对抗技术 20165210 Exp4 恶意代码分析
			2018-2019-2 网络对抗技术 20165210 Exp4 恶意代码分析 一.实验目标 首先是监控你自己系统的运行状态,看有没有可疑的程序在运行. 其次是分析一个恶意软件,就分析Exp2或Exp ... 
- jquery.lazyload.js 图片延迟加载
			当做网页的时候,特别是整个网页展示图片较多的时候,用到图片延迟效果是很好的 使用方法也非常简单. 1.在网页任何位置(一般是在</body>前面)加上如下代码(注意<script&g ... 
- kd树的原理
			kd树就是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构,可以运用在k近邻法中,实现快速k近邻搜索.构造kd树相当于不断地用垂直于坐标轴的超平面将k维空间切分. 假设数据 ... 
- NGUI动态给EventDelegate加参数
			示例代码如下: 响应的函数声明为: void OnChange(UIToggle toggle) { if(toggle.value) { // do something } } 添加响应的代码如 ... 
- 页面提交 string数组和list对象集合举例
			ajax表单提交 $.ajax({ cache: true, type: "POST", ... 
- EXCEL某列长度超过255个字符导入SQL SERVER2005的处理方法
			将注册表中 Jet引擎. HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel 如果是:ACE引擎. HKEY_LOCAL_MACHI ... 
- Hadoop简介(1):什么是Map/Reduce
			看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop整体有所了解了. Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Red ... 
- ubnut16.4 下 设置静态ip
			一.编辑interfaces sudo vi /etc/network/interface ### i 键进入编辑 二.编辑该文件 auto loiface lo inet loopbackauto ... 
- flask第十三篇——url注意事项
			先和大家说一下常用的请求方法 get:只是从服务器获取数据,不会对服务器的状态或数据产生任何影响: get方法的参数是放在URL中传递的. post:会对服务器的状态或数据产生影响:通过body形式进 ... 
- bat实现创建、复制、删除文件及文件夹
			1 建bat文件自动执行复制,删除命令. 例1:以下是复制cd.dll文件至windows\system32的bat文件内容: copy cd.dll %windir%\system32 例2:下面一 ... 
