0
点赞
收藏
分享

微信扫一扫

Google Guice范例解说之使用入门

Google Guice范例解说之使用入门

http://code.google.com/p/google-guice/
Google公司的Bob lee开发的轻量级IoC容器,其特点是:

1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少

http://code.google.com/p/google-guice/wiki/SpringComparison

这是Google guice和spring IoC容器的对比

另外xwork2.0已经集成了Google guice容器了。

http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8

这是Google guice的快速入门文档,用起来挺简单的。

Google Guice范例解说之使用入门
本文通过范例简单地介绍Google Guice的使用,通过下面的范例我们可以知道,Google Guice的使用非常简单。

  Google Guice需要使用JDK1.5以上java环境。

  下载Google Guice之后,

  有以下几个文件:

  aopalliance.jar

  guice-1.0.jar

  guice-servlet-1.0.jar

  guice-spring-1.0.jar

  guice-struts2-plugin-1.0.jar

  本例只使用到guice-1.0.jar文件,将其加入到class path中。

  下面简单地介绍范例:

  范例1:使用com.google.inject.Module接口实现类

文件名 说明

文件名

说明

HelloGuice.java

业务逻辑接口定义文件

HelloGuiceImpl.java

业务逻辑接口实现文件

HelloGuiceModule.java

该文件必须实现com.google.inject.Module接口

TestGuice.java

测试文件

HelloGuice.java
   
 package com.test.guice;
   
 public interface HelloGuice {
   public void sayHello();
 }
   
 HelloGuiceImpl.java
   
 package com.test.guice;
   
 public class HelloGuiceImpl implements HelloGuice {
   
   public void sayHello() {
     System.out.println("Hello Guice!");
   }
 }
   
 HelloGuiceModule.java

 package com.test.guice;
   
 import com.google.inject.Binder;
 import com.google.inject.Module;
   
 public class HelloGuiceModule implements Module {
   
   public void configure(Binder binder) {
     binder.bind(HelloGuice.class).to(HelloGuiceImpl.class);
   }
   
 }
   
 TestGuice.java
 package com.test.guice;
   
 import junit.framework.TestCase;
   
 import com.google.inject.Guice;
 import com.google.inject.Injector;
   
 public class TestGuice extends TestCase {
   public void testHelloGuice() {
     Injector injector = Guice.createInjector(new HelloGuiceModule());
     
     HelloGuice helloGuice = injector.getInstance(HelloGuice.class);
     helloGuice.sayHello();
   }
 }

  运行TestGuice,打印出:

Hello Guice!
  范例2:使用Java Annotation
  我们也可以直接为HelloGuice加上@ImplementedBy注释,而省略掉对com.google.inject.Module的实现。
HelloGuice.java
 package com.test.guice;
   
 import com.google.inject.ImplementedBy;
   
 @ImplementedBy(HelloGuiceImpl.class)
 public interface HelloGuice {
   public void sayHello();
 }
   
 TestGuice.java 
 package com.test.guice;
   
 import junit.framework.TestCase;
   
 import com.google.inject.Guice;
 import com.google.inject.Injector;
   
 public class TestGuice extends TestCase {
   public void testHelloGuice() {
     //Injector injector = Guice.createInjector(new HelloGuiceModule());
     
     Injector injector = Guice.createInjector();
     HelloGuice helloGuice = injector.getInstance(HelloGuice.class);
     helloGuice.sayHello();
   }
 }

  HelloGuiceModule.java不再需要。其余的文件内容不变。

  运行TestGuice,打印出:

  Hello Guice!

 

 

1. 依赖注入

1.1 类依赖注入

所谓的绑定就是将一个接口绑定到具体的类中,这样客户端不用关心具体的实现,而只需要获取相应的接口完成其服务即可。

HelloWorld.java

 



举报

相关推荐

0 条评论