guice是使用module进行绑定的,它提供了两种方式进行操作.
第一种是继承AbstractModule抽象类.
1 package com.ming.user.test; 2 3 import com.google.inject.AbstractModule; 4 5 /** 6 * 继承 AbstractModule这个抽象类 7 * @author Administrator 8 * 9 */ 10 public class TestModule extends AbstractModule{ 11 12 @Override 13 protected void configure() { 14 15 bind(Dog.class).to(DarkDog.class); 16 17 } 18 }
第二种是实现Module接口:
1 package com.ming.user.test; 2 3 import com.google.inject.Binder; 4 import com.google.inject.Module; 5 6 /** 7 * 实现module 接口 8 * @author mingge 9 * 10 */ 11 public class GoogleGuiceModule implements Module{ 12 13 @Override 14 public void configure(Binder arg) { 15 arg.bind(Dog.class).to(DarkDog.class); 16 } 17 18 19 }
例子代码如下:
1 package com.ming.user.test; 2 3 public class Dog { 4 5 void eat(){ 6 System.out.println("父类的在go,go,go。。。"); 7 } 8 }
1 package com.ming.user.test; 2 3 public class DarkDog extends Dog{ 4 5 @Override 6 void eat() { 7 System.out.println("heeeelo"); 8 //super.eat(); 9 } 10 11 12 }
1 package com.ming.user.test; 2 3 import com.google.inject.AbstractModule; 4 5 /** 6 * 继承 AbstractModule这个抽象类 7 * @author Administrator 8 * 9 */ 10 public class TestModule extends AbstractModule{ 11 12 @Override 13 protected void configure() { 14 15 bind(Dog.class).to(DarkDog.class); 16 17 } 18 }
1 package com.ming.user.test; 2 3 import com.google.inject.Binder; 4 import com.google.inject.Module; 5 6 /** 7 * 实现module 接口 8 * @author mingge 9 * 10 */ 11 public class GoogleGuiceModule implements Module{ 12 13 @Override 14 public void configure(Binder arg) { 15 arg.bind(Dog.class).to(DarkDog.class); 16 } 17 18 19 }
测试:
1 package com.ming.user.test; 2 3 import com.google.inject.Guice; 4 import com.google.inject.Injector; 5 6 7 public class Test { 8 9 public static void main(String[] args) { 10 Injector injector = Guice.createInjector(new GoogleGuiceModule()); 11 // Injector injector = Guice.createInjector(new TestModule()()); //跟上一行代码目标意义一样哦 12 Dog dog=injector.getInstance(Dog.class); 13 dog.eat(); 14 } 15 }
我们项目用得最多的是AbstractModule,当然如果有特殊需要,你也可以扩张Module了。
下篇聊一聊绑定之类的......
时间: 2024-11-05 11:52:33