guice基本使用,配置模块的两种方式(三)

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

第一种是继承AbstractModule抽象类.

 1 package com.ming.user.test;
 2
 3 import com.google.inject.AbstractModule;
 4
 5 /**
 6  * 继承 AbstractModule这个抽象类
 7  * @author Administrator
 8  *
 9  */
10 public class TestModule extends AbstractModule{
11
12     @Override
13     protected void configure() {
14
15         bind(Dog.class).to(DarkDog.class);
16
17     }
18 }

第二种是实现Module接口:

 1 package com.ming.user.test;
 2
 3 import com.google.inject.Binder;
 4 import com.google.inject.Module;
 5
 6 /**
 7  * 实现module 接口
 8  * @author mingge
 9  *
10  */
11 public class GoogleGuiceModule implements Module{
12
13     @Override
14     public void configure(Binder arg) {
15         arg.bind(Dog.class).to(DarkDog.class);
16     }
17
18
19 }

例子代码如下:

1 package com.ming.user.test;
2
3 public class Dog {
4
5     void eat(){
6         System.out.println("父类的在go,go,go。。。");
7     }
8 }
 1 package com.ming.user.test;
 2
 3 public class DarkDog extends Dog{
 4
 5     @Override
 6     void eat() {
 7         System.out.println("heeeelo");
 8         //super.eat();
 9     }
10
11
12 }
 1 package com.ming.user.test;
 2
 3 import com.google.inject.AbstractModule;
 4
 5 /**
 6  * 继承 AbstractModule这个抽象类
 7  * @author Administrator
 8  *
 9  */
10 public class TestModule extends AbstractModule{
11
12     @Override
13     protected void configure() {
14
15         bind(Dog.class).to(DarkDog.class);
16
17     }
18 }
 1 package com.ming.user.test;
 2
 3 import com.google.inject.Binder;
 4 import com.google.inject.Module;
 5
 6 /**
 7  * 实现module 接口
 8  * @author mingge
 9  *
10  */
11 public class GoogleGuiceModule implements Module{
12
13     @Override
14     public void configure(Binder arg) {
15         arg.bind(Dog.class).to(DarkDog.class);
16     }
17
18
19 }

测试:

 1 package com.ming.user.test;
 2
 3 import com.google.inject.Guice;
 4 import com.google.inject.Injector;
 5
 6
 7 public class Test {
 8
 9     public static void main(String[] args) {
10          Injector injector = Guice.createInjector(new GoogleGuiceModule());
11          // Injector injector = Guice.createInjector(new TestModule()()); //跟上一行代码目标意义一样哦
12          Dog dog=injector.getInstance(Dog.class);
13          dog.eat();
14     }
15 }

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

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

时间: 2024-11-05 11:52:33

guice基本使用,配置模块的两种方式(三)的相关文章

从源代码剖析Struts2中用户自定义配置转换器的两种方式——基于字段的配置转换器和基于类型的配置转换器(解决了实际系统中,因没有区分这两种工作方式的生命周期而引起的异常错误问题)

自定义类型转换器必须实现ongl.TypeConverter接口或对这个接口的某种具体实现做扩展 <<interface>>com.opensymphony.xwork2.conversion.TypeConverter à com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter à org.apache.struts2.util.StrutsTypeConverter 接口及类进行解析 TypeConverter(

spring配置属性的两种方式

spring配置属性有两种方式,第一种方式通过context命名空间中的property-placeholder标签 <context:property-placeholder location="classpath:jdbctemplate/jdbc.properties" /> 第二种方式通过创建bean,对应类为PropertyPlaceholderConfigurer <bean id="propertyConfigurer" class=

MyBatis配置数据源的两种方式

---------------------siwuxie095 MyBatis 配置数据源的两种方式 1.配置方式一:配置数据库连接信息到核心配置文件中 在 mybatis-config.xml 中添加如下内容: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" &

在思科三层交换机配置网关的两种方式

随着交换技术的发展,三层交换机在网络汇聚层与核心层的应用越来越多.在内网中子网与子网之间的通讯越来越少依赖于路由(几乎见不到了),而是使用带有路由功能的三层交换机,这对于内网中子网之间的通信效率的提高是显著的. 在三层交换机配置子网之间的通讯有一个关键的地方,就是子网网关的配置.当子网与子网之间进行通讯时,发起通讯的一方,在本子网中找不到通讯的目标时,就会将通讯的请求提交给自己子网的网关,由自己子网的网关负责处理.在三层交换机启用路由功能时,第一次根据路由条目查询对应目标计算机所在的子网,记录下

转 web.config中配置数据库连接的两种方式

在网站开发中,数据库操作是经常要用到的操作,ASP.NET中一般做法是在web.config中配置数据库连接代码,然后在程序中调用数据库连接代码,这样做的好处就是当数据库连接代码需要改变的时候,我们只要修改web.config中的数据库连接代码即可,而不必在修改每一个页面中的数据库连接代码. 在ASP.Net中有两种配置数据库连接代码的方式,它们分别是 appSettings 和 connectionStrings .在使用 appSettings 和 connectionStrings 配置数

SSH2配置事务的两种方式

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/

JNDI+Tomcat配置数据源的两种方式

非全局jndi配置步骤 :此种配置方式不需要在server.xml中配置数据源,而只在tomcat/conf/Catalina/localhost下的启动配置中配置即可.注意红色字体名称必须和相同. 0.需要在tomcat/common/lib下加入数据库连接的jar包 1.web.xml配置 <resource-ref>      <description>my DB Connection</description>      <res-ref-name>

使用工厂方法配置bean的两种方式

1.使用静态工厂方法: 对应的配置.xml文件: 2.通过实例工厂的方法来配置bean: 对应的xml文件:

Spring(十三):使用工厂方法来配置Bean的两种方式(静态工厂方法&amp;实例工厂方法)

通过调用静态工厂方法创建Bean 1)调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中.当客户端需要对象时,只需要简单地调用静态方法,而不需要关心创建对象的具体细节. 2)要声明通过静态方法创建的Bean,需要在Bean的class属性中指定拥有该工厂的方法的类,同时需要在bean的factory-method属性里指定工厂方法的名称.最后,使用<constructor-arg>元素为该方法传递方法参数. 示例: 第一步:创建一个java project,导入包: 第二步:创建c