Google Guice 接口多实现 注入
来源:互联网 发布:js小图传给大图 编辑:程序博客网 时间:2024/05/17 23:17
前面几节主要介绍了绑定和注入方式,但是我们看到无论是通过在Module中通过Binder来绑定还是通过@ImplementedBy注解来绑定,一个接口都只能绑定到一个具体的实现类上,现在如果在一个调用类中,有多个Hello.java这个接口的属性,需要绑定到不同的实现类上,这如何使用Guice框架来完成注入呢?
这一节我们来说说接口多个实现类的注入方式
(1)首先定义一个接口Hello.java和两个不同的实现类HelloImpl1.java,helloImpl.java
package guice.di.mutiple;public interface Hello {//定义一个sayHello方法void satHello() ;}package guice.di.mutiple;//Hello 的实现类HelloImpl1public class HelloImpl1 implements Hello{public void satHello() {System.out.println("HelloImpl1 say Hello!");};}package guice.di.mutiple;//Hello的具体实现类HelloImpl2public class HelloImpl2 implements Hello{@Overridepublic void satHello() {System.out.println("HelloImpl2 say Hello!");}}
(2)创建一个Hello这个接口的调用者
package guice.di.mutiple;import com.google.inject.Inject;import com.google.inject.name.Named;//将一个接口绑定到多个实现类上public class HelloCaller {@Inject@Named("HelloImpl1")private Hello helloImpl1 ;@Inject@Named("HelloImpl2")private Hello helloImpl2 ;public void sayHello1(){helloImpl1.satHello() ;}public void sayHello2(){helloImpl2.satHello() ;}}
(3)创建MyModule来实现一个接口绑定多个实现类
package guice.di.mutiple;import com.google.inject.Binder;import com.google.inject.Module;import com.google.inject.name.Names;public class MyModule implements Module{@Overridepublic void configure(Binder binder) {//通过annotatedWith 中使用Named方法来绑定多个实现类binder.bind(Hello.class).annotatedWith(Names.named("HelloImpl1")).to(HelloImpl1.class) ;binder.bind(Hello.class).annotatedWith(Names.named("HelloImpl2")).to(HelloImpl2.class) ;}}(4)创建测试程序
package guice.di.mutiple;import com.google.inject.Guice;import com.google.inject.Injector;public class Client {public static void main(String[] args) {Injector in = Guice.createInjector(new MyModule()) ;HelloCaller caller = in.getInstance(HelloCaller.class) ;caller.sayHello1() ;caller.sayHello2() ;}}
输出结果:
HelloImpl1 say Hello!
HelloImpl2 say Hello!
本文介绍通过使用@Named注解来完成一个接口(父类)绑定多个实现类(子类)的方式。
0 0
- Google Guice 接口多实现 注入
- IOC依赖注入:google-guice
- Google Guice之选项注入
- Google Guice之注入方式
- Android依赖注入:Google Guice on Android
- Google Guice 入门教程01 - 依赖注入(1)
- Google Guice 入门教程02 - 依赖注入(2)
- Google Guice 入门教程03 - 依赖注入(3)
- Google Guice 入门教程04 - 依赖注入(4)
- Google Guice 注入(@Inject注解)
- Google Guice(@Inject)静态注入
- Google Guice之基本类型注入
- Google Guice 依赖注入框架:简明教程
- Google Guice 注入(@Inject注解)
- Google Guice 依赖注入方式--2
- Google Guice 注入(@Inject注解)
- spring 深入理解 google Guice 依赖注入
- guice 注入
- Visaul Studio 常用快捷键的动画演示
- Oracle11G 用imp导入数据
- android启动界面
- 杭电1213 How Many Tables(并查集)
- php empty()和isset()的区别
- Google Guice 接口多实现 注入
- cocos3.0使用cocostudio动画帧结合地图对象键值创建精灵动画
- poj2983 Is the Information Reliable
- Windows 7 硬盘安装正确方法 不用刻盘
- 在网页上启动你的应用程序
- 安装树莓派 Raspberry PI
- mac地址转换
- [设计模式]原型模式
- linux的硬盘安装