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