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 ...
随机推荐
- (转)C#开发微信门户及应用(6)--微信门户菜单的管理操作
http://www.cnblogs.com/wuhuacong/p/3701961.html 前面几篇继续了我自己对于C#开发微信门户及应用的技术探索和相关的经验总结,继续探索微信API并分享相关的 ...
- element-ui按需引入
{ "name": "vue-test2", "description": "A Vue.js project", &q ...
- rabbitmq和kafka的区别
1.吞吐量kafka吞吐量更高: 1)Zero Copy机制,内核copy数据直接copy到网络设备,不必经过内核到用户再到内核的copy,减小了copy次数和上下文切换次数,大大提高了效率. 2)磁 ...
- Oracle经验积累
Oracle 常用Funtion ----行转列 开始---- select u_id, wmsys.wm_concat(goods) goods_sum from shopping group by ...
- VUE常见问题解决
1.vue模板加载顺序 computed:例如分页的配置: created:dom加载前一般用来生成dom mounted:dom加载后用来覆盖渲染或者基于dom的操作 2.关于this指向的问题 通 ...
- Git 基础教程 之 Bug分支和Stash
在Git中,每个Bug都可以通过一个新的临时分支修复,修复后,合并分支,然后删除. ① 当接到一个Bug任务时,但dev上进行的工作还没有提交时: ② git stash 把现场工作“储藏 ...
- 【习题 4-8 UVA - 12108】Extraordinarily Tired Students
[链接] 我是链接,点我呀:) [题意] [题解] 一个单位时间.一个单位时间地模拟就好. 然后对于每个人. 记录它所处的周期下标idx 每个单位时间都会让每个人的idx++ 注意从醒着到睡着的分界线 ...
- c++0x11新特性:delete删除函数
c_plus_plus_0x11.cpp: // c_plus_plus_0x11.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #inc ...
- Solr 6.4.2对比Solr 4.10.3的新特性
1.可以修改时区了.(Solr4.10.3及之前的版本,时区只能是UTC,开发人员需要转换后才能使用.当时为了解决不能设置时区的问题,每个文档都有两个Date,一个是utc时间,一个是utc+8的中国 ...
- 服务器session,Tomcat有自己的session维护机制,apache有自己的session维护机制
1.SESSION一般不是你说的这种工作方式,你打开一个浏览器,再打开一个,请求同一个网址,然后其中一个登陆,另外一个绝对不会也登陆.SESSION和浏览器本身这个程序就是挂钩的,一般不通过IP和端口 ...