guice是使用module进行绑定的,它提供了两种方式进行操作.

第一种是继承AbstractModule抽象类.

 package com.ming.user.test;

 import com.google.inject.AbstractModule;

 /**
* 继承 AbstractModule这个抽象类
* @author Administrator
*
*/
public class TestModule extends AbstractModule{ @Override
protected void configure() { bind(Dog.class).to(DarkDog.class); }
}

第二种是实现Module接口:

 package com.ming.user.test;

 import com.google.inject.Binder;
import com.google.inject.Module; /**
* 实现module 接口
* @author mingge
*
*/
public class GoogleGuiceModule implements Module{ @Override
public void configure(Binder arg) {
arg.bind(Dog.class).to(DarkDog.class);
} }

例子代码如下:

 package com.ming.user.test;

 public class Dog {

     void eat(){
System.out.println("父类的在go,go,go。。。");
}
}
 package com.ming.user.test;

 public class DarkDog extends Dog{

     @Override
void eat() {
System.out.println("heeeelo");
//super.eat();
} }
 package com.ming.user.test;

 import com.google.inject.AbstractModule;

 /**
* 继承 AbstractModule这个抽象类
* @author Administrator
*
*/
public class TestModule extends AbstractModule{ @Override
protected void configure() { bind(Dog.class).to(DarkDog.class); }
}
 package com.ming.user.test;

 import com.google.inject.Binder;
import com.google.inject.Module; /**
* 实现module 接口
* @author mingge
*
*/
public class GoogleGuiceModule implements Module{ @Override
public void configure(Binder arg) {
arg.bind(Dog.class).to(DarkDog.class);
} }

测试:

 package com.ming.user.test;

 import com.google.inject.Guice;
import com.google.inject.Injector; public class Test { public static void main(String[] args) {
Injector injector = Guice.createInjector(new GoogleGuiceModule());
// Injector injector = Guice.createInjector(new TestModule()()); //跟上一行代码目标意义一样哦
Dog dog=injector.getInstance(Dog.class);
dog.eat();
}
}

我们项目用得最多的是AbstractModule,当然如果有特殊需要,你也可以扩张Module了。

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

最新文章

  1. LeetCode 118 Pascal's Triangle
  2. 发现一个百度的密码。。。记最近一段时间的php感想
  3. freemaker转word xml注意事项
  4. Android(java)学习笔记263:Android下的属性动画(Property Animation)
  5. Oracle中的内置函数在sql中的转换整理
  6. 关于java' web杂谈(其实是课后作业1)1 网站系统开发需要掌握的技术
  7. Cookies的实际存储位置
  8. python3_猜数字
  9. tomcat配置层了解一下 idea打包 java打包部署
  10. dubbo控制器xml文件报错
  11. JS全局对象的属性
  12. create pdf file using Spire.Pdf or iTextSharp or PdfSharp
  13. BZOJ4127Abs——树链剖分+线段树
  14. Linux Centos关机命令
  15. 【oneday_onepage】——美国主食吃什么
  16. 【python 3.6】python读取json数据存入MySQL(一)
  17. 关于Nvelocity的主要语法和一些代码示例
  18. 知物由学 | 如何利用人工智能来对抗DDoS攻击?
  19. 使用canvas控制gif图片的播放与暂停
  20. shared_ptr 的循环依赖问题

热门文章

  1. js 习题
  2. Express+Nodejs 下的登录拦截实现
  3. es6-set-map数据结构
  4. Django—链接MySQL
  5. SSL证书在线申请和取回证书指南
  6. 7.5 pragma 指令
  7. [luogu1129 ZJOI2007] 矩阵游戏 (二分图最大匹配)
  8. 7.ES几种常见的搜索方式
  9. Git 基础教程 之 暂存区
  10. java IO框架分析