差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:guice:helloworld [2013/11/08 17:55]
tony
java:guice:helloworld [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​java guice}} 
-====== Hello World! ====== 
-這個範例主要了解Guice如何實做Dependency Injection(DI)。 
-===== 準備 ===== 
-  - 至[[https://​code.google.com/​p/​google-guice/​downloads/​list|Guice官網]]下載lib包。我下載了 guice-4.0-beta.zip。 
-  - 建立一個Eclipse Java Project並把壓縮的內容解壓到Project libs目錄。 
-  - 將guice-4.0-beta.tar與javax.inject.jar加入build path中。 
-===== 第一隻Guice程式 ===== 
-範例程式包含介面IPrintServer、實作類別ConsolePrinter、用戶端PrinterClient與Guice所需要的configuration模組PrinterModule。\\ 
  
-PrintService介面:​ 
-<file java IPrintService.java>​ 
-package org.tonylin.practice.guice;​ 
- 
-public interface IPrintService { 
- void print(String ... strs); 
-} 
-</​file>​ 
-ConsolePrinter提供Console類型服務的PrintService:​ 
-<file java ConsolePrinter.java>​ 
-package org.tonylin.practice.guice;​ 
- 
-public class ConsolePrinter implements IPrintService { 
- 
- @Override 
- public void print(String... strs) { 
- for( String str : strs ){ 
- System.out.println(str);​ 
- } 
- } 
-} 
-</​file>​ 
-PrinterClient是使用到PrintService的用戶端,我們必須針對提供注入服務的函式宣告為@Inject:​ 
-<file java PrinterClient.java>​ 
-package org.tonylin.practice.guice;​ 
- 
-import com.google.inject.Guice;​ 
-import com.google.inject.Inject;​ 
-import com.google.inject.Injector;​ 
- 
-public class PrinterClient { 
- private IPrintService mPrintService = null; 
-  
-  
- @Inject 
- public void setPrintService(IPrintService aPrintService){ 
- mPrintService = aPrintService;​ 
- } 
-  
- public IPrintService getPrintService(){ 
- return mPrintService;​ 
- } 
-  
- public void print(String ... strs){ 
- mPrintService.print(strs);​ 
- } 
-  
- public static void main(String[] args) { 
- Injector injector = Guice.createInjector(new PrinterModule());​ 
- PrinterClient printerClient = injector.getInstance(PrinterClient.class);​ 
- printerClient.print("​test1",​ "​test2"​);​ 
- } 
- 
-} 
-</​file>​ 
-PrinterModule負責建立PrinterClient與實際提供服務類別的連結,在這裡我透過System Propertes去決定我所要注入給PrinterClient的IPrintService實體:​ 
-<file java PrinterModule.java>​ 
-package org.tonylin.practice.guice;​ 
- 
-import com.google.inject.Binder;​ 
-import com.google.inject.Module;​ 
- 
-public class PrinterModule implements Module { 
- @Override 
- public void configure(Binder binder) { 
-     binder.bind(IPrintService.class).to(ConsolePrinter.class);​ 
- } 
-} 
-</​file>​ 
- 
-執行PrinterClient的main可以發現test1與test2字串顯示在螢幕上。\\ 
-\\ 
-友藏內心獨白:​ 照這樣看來Guice是蠻簡單的! 
-=====    ===== 
----- 
-\\ 
-~~DISQUS~~