Google Guice 绑定2

来源:互联网 发布:淘宝点赞怎样赚钱 编辑:程序博客网 时间:2024/06/14 00:39

上一章简单介绍了,如何使用Guice框架来完成接口(父类)和具体的实现类(子类)之间的关联。通过MyModule中:

binder.bind(Hello.class).to(HelloImpl.class).in(Singleton.class) ;

来实现关联关系,这节介绍通过注解来实现关联关系

(1)首先还是Hello.java接口(注意类头上的注解,描述了这个接口要绑定的实现类)

package guice.binder;import com.google.inject.ImplementedBy;/** *  * @author Java_Le * @Date 2014-5-1下午09:38:50 * @ClassName Hello.java */@ImplementedBy(HelloImpl.class)public interface Hello {void sayHello() ;}
(2)Hello.java这个接口的具体实现类:HelloImpl.java(类头上的注解,这类是单列还是动态创建)

package guice.binder;import com.google.inject.Singleton;/** *  * @author Java_Le * @Date 2014-5-1下午10:03:51 * @ClassName HelloImpl.java */@Singletonpublic class HelloImpl implements Hello{@Overridepublic void sayHello() {System.out.println("HelloImpl say hello");}}
(3)我们的MyModule实现类(具体的绑定关系被注释了)

package guice.binder;import com.google.inject.Binder;import com.google.inject.Module;public class MyModule implements Module{@Overridepublic void configure(Binder binder) {//将借口hello.java 绑定到实现类HelloImpl.java上//Singleton:表示是scope是单列的,Guice中类的scope只有两类,单例,或者每次都是new的一个新的对象//binder.bind(Hello.class).to(HelloImpl.class).in(Singleton.class) ;}}
(4)Client测试( 这个类和上一节没什么变化)

package guice.binder;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()) ;Hello hello = in.getInstance(Hello.class) ;//hello -->HelloImpl实例hello.sayHello() ;}}
 输出结果:

HelloImpl say hello

输出的结果依然还是HelloImpl say hello,其实,Guice框架不仅可以维护接口和具体的实现类之间的绑定关系,还可以维护父类和之类之间的绑定关系,同样的你完全可以把类的创建交给Guice框架去管理(免去了手动new的过程)。






0 0