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 ...
随机推荐
- Python 字符串常用方法 day2
1.去空格和换行符: s = ' a bc ' print(s.strip())#strip(),去掉字符串两边的空格和换行符,无法去除中间的空格 print(s.rstrip())#rstrip() ...
- Network-Flow
//Created by pritry int graph[MAX][MAX]; //原图 int source; //起点,这里为0 int sink; //终点,这里为n-1 int e[MAX] ...
- 重装系统后导入raid
参考 https://ubuntuforums.org/showthread.php?t=2002217 https://www.funkypenguin.co.nz/note/importing-e ...
- Problem 16
Problem 16 pow(2, 15) = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.2的15次方等于32768,而这些数 ...
- NOIP 2016 换教室(期望dp)
第一次做期望dp 并不知道每个阶段的期望之和就是整个的期望之和 所以一直卡在这 期望=代价*概率 然后注意只有申请了才算期望,否则按原来的. 这道题和前几个课程,申请的限制,当前选或不选,有关 这样很 ...
- 《团队名称》第八次团队作业:Alpha冲刺
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 (1)掌握软件测试基础技术(2)学习迭代式增量软件开发过程(Scrum) ...
- xdebug PHPStrom调试 安装
1.publi目录下新建info文件: 2.搜索是否已经安装过xdebug 3.下载安装 >[info] 自动查找相对应的版本 == 打开php.ini 原始: [XDebug]xdebug.p ...
- (24)Spring Boot环境变量读取和属性对象的绑定【从零开始学Spring Boot】
凡是被Spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量. com. ...
- nyoj 547 优先队列
#include<stdio.h> #include<string.h> #include<queue>//水杯盛水问题,用优先队列不断从最小的边缘开始 using ...
- Tomcat日志配置远程Syslog采集
http://blog.csdn.net/leizi191110211/article/details/51593748