Google Guice范例解说之使用入门
http://code.google.com/p/google-guice/
Google公司的Bob lee開(kāi)發(fā)的輕量級(jí)IoC容器,其特點(diǎn)是:
1、速度快,號(hào)稱(chēng)是spring的100倍速度
2、無(wú)配置文件,實(shí)用JDK5.0的annotation描述組件依賴(lài),簡(jiǎn)單,而且有編譯器檢查和重構(gòu)支持
3、簡(jiǎn)單,代碼量很少
http://code.google.com/p/google-guice/wiki/SpringComparison
這是Google guice和spring IoC容器的對(duì)比
另外xwork2.0已經(jīng)集成了Google guice容器了。
http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8
這是Google guice的快速入門(mén)文檔,用起來(lái)挺簡(jiǎn)單的。
Google Guice范例解說(shuō)之使用入門(mén)
本文通過(guò)范例簡(jiǎn)單地介紹Google Guice的使用,通過(guò)下面的范例我們可以知道,Google Guice的使用非常簡(jiǎn)單。
Google Guice需要使用JDK1.5以上java環(huán)境。
下載Google Guice之后,
有以下幾個(gè)文件:
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中。
下面簡(jiǎn)單地介紹范例:
范例1:使用com.google.inject.Module接口實(shí)現(xiàn)類(lèi)
文件名 說(shuō)明
| 文件名 | 說(shuō)明 |
| HelloGuice.java | 業(yè)務(wù)邏輯接口定義文件 |
| HelloGuiceImpl.java | 業(yè)務(wù)邏輯接口實(shí)現(xiàn)文件 |
| HelloGuiceModule.java | 該文件必須實(shí)現(xiàn)com.google.inject.Module接口 |
| TestGuice.java | 測(cè)試文件 |
?
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();
}
}
運(yùn)行TestGuice,打印出:
Hello Guice!
范例2:使用Java Annotation
我們也可以直接為HelloGuice加上@ImplementedBy注釋,而省略掉對(duì)com.google.inject.Module的實(shí)現(xiàn)。
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不再需要。其余的文件內(nèi)容不變。
運(yùn)行TestGuice,打印出:
Hello Guice!
?
?
摘自 :http://hi.baidu.com/changzhiwin/blog/item/1e8251861feb553466096e36.html?
?
?
1. 依賴(lài)注入
1.1 類(lèi)依賴(lài)注入
所謂的綁定就是將一個(gè)接口綁定到具體的類(lèi)中,這樣客戶(hù)端不用關(guān)心具體的實(shí)現(xiàn),而只需要獲取相應(yīng)的接口完成其服務(wù)即可。
HelloWorld.java
?
總結(jié)
以上是生活随笔為你收集整理的Google Guice范例解说之使用入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: google us web
- 下一篇: ActiveMQ 学习(VM Trans