guice基本使用,配置模块的两种方式(三)
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了。
下篇聊一聊绑定之类的......
guice基本使用,配置模块的两种方式(三)的更多相关文章
- spring配置属性的两种方式
spring配置属性有两种方式,第一种方式通过context命名空间中的property-placeholder标签 <context:property-placeholder location ...
- web.config文件中配置数据库连接的两种方式
web.config文件中配置数据库连接的两种方式 标签: 数据库webconfig 2015-04-28 18:18 31590人阅读 评论(1)收藏举报 分类: 数据库(74) 在网站开发 ...
- MyBatis配置数据源的两种方式
---------------------siwuxie095 MyBatis 配置数据源的两种方式 1.配置方 ...
- springmvc配置AOP的两种方式
spingmvc配置AOP有两种方式,一种是利用注解的方式配置,另一种是XML配置实现. 应用注解的方式配置: 先在maven中引入AOP用到的依赖 <dependency> <gr ...
- Spring Boot配置过滤器的两种方式
过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验.权限控制.敏感词过滤等,下面介绍下Spring Boot配置过 ...
- jdk配置java_home的两种方式
在开发java项目的时候,要先安装jdk,安装完jdk之后我们要配置环境变量.今天说一下java home环境变量. 配置环境变量有两种方式,一种就是在计算机的环境变量里面配置.这个是很简单的.如果你 ...
- Appium 自动化测试配置wda的两种方式。
tips:WebDriverAgent是Appium1.6.3以后版本新添加的模块,为了让appium与iPhone(基于xcuitest)设备进行通信而添加的.但是,这个模块在是一个独立的项目,在使 ...
- Spring总结——控制反转,注入(配置和注解两种方式)
一.Spring的容器: 1.什么是控制反转:传统的方法,当某个java对象A需要调用对象B时,是由调用者(对象A)通过new关键字来创建对象B的(也可以说类A依赖类B),而在Spring中,则是由s ...
- web.config中配置数据库连接的两种方式
在ASP.NET中有两种配置数据库连接代码的方式,它们分别是 appSettings 和 connectionStrings .在使用 appSettings 和 connectionStrings ...
随机推荐
- css单双行样式
#random_box li:nth-child(odd) {//双行 background: #fff5c4; } #random_box li:nth-child(even) {//单行 back ...
- Android内存优化————加载长图
项目中总会遇到加载长图的需求,图片的长度可能是手机长度的很多倍,也就是需要通过滑动来查看图片.比较简单的实现方式就是使用ScrollView来加载长图,但是这样做有一个很严重的问题,就是内存消耗严重. ...
- PAT_A1154#Vertex Coloring
Source: PAT A 1154 Vertex Coloring (25 分) Description: A proper vertex coloring is a labeling of the ...
- js对比for、forEach、map遍历数组速度
function a() { var arr = new Array(1000000); for(var i = 0; i < arr.length;i ++) { arr[i] = i; } ...
- [poj1325] Machine Schedule (二分图最小点覆盖)
传送门 Description As we all know, machine scheduling is a very classical problem in computer science a ...
- 继续聊WPF——进度条
ProgressBar控件与传统WinForm使用方法完全一样,我们只需关注: Minimum——最小值,默认为0: Maximum——最大值,默认为100. Value——当前值. 关键是它的控 ...
- Codeforces 898D - Alarm Clock
传送门:http://codeforces.com/contest/898/problem/D 有n个闹钟,第i(1≤i≤n)个闹钟将在第ai(1≤ai≤106)分钟鸣响,鸣响时间为一分钟.当在连续的 ...
- xe7android调用webservice
1.如果用的roservice,那么用builder打开rodl然后直接生成wsdl保存: 2.由系统IDE的Component中调用import WSDL后save as. 3.调用代码: HTTP ...
- [jQuery]data-不能乱用啊
使用jQuery easy ui做一个拖拽的功能 因为在要拖拽的元素中使用了date-options={OPTIONS}来存数据,因为没有替换{OPTIONS} jQuery貌似把我的}识别成方法的} ...
- Android解决使用findViewById时须要对返回值进行类型转换问题的辅助类
在我们的开发工作时,findViewById可能是用得最多的函数之中的一个.但它特别讨厌的地方就是我们常常须要对返回的view进行类型转换,输入麻烦.代码丑陋,比如曾经我们在Activity中找一些子 ...