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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值