码迷,mamicode.com
首页 > 其他好文 > 详细

guice基本使用,配置模块的两种方式(三)

时间:2016-08-23 12:52:43      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

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了。

 

下篇聊一聊绑定之类的......

 

 

guice基本使用,配置模块的两种方式(三)

标签:

原文地址:http://www.cnblogs.com/huzi007/p/5798688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!