Google Guice范例解说之使用入门

来源:互联网 发布:中华魔力迅白牙膏知乎 编辑:程序博客网 时间:2024/06/03 19:38
http://www.cnblogs.com/xd502djj/archive/2012/06/25/2561414.html
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!

 

 

摘自 :http://hi.baidu.com/changzhiwin/blog/item/1e8251861feb553466096e36.html 

 

 

1. 依赖注入

1.1 类依赖注入

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

HelloWorld.java

 

原创粉丝点击