Guice 注入--(privateModule,intall(),expose())

原创 2016年05月31日 20:14:54

          Guice注入的总体思路是:1-首先有Interface 2-针对接口定义一个实现Imp 3-创建一个类(继承自PrivateModule或者AbstractModule )来定义Interface与实现类Imp的关系。通过下面的例子来理解这种定义。

  定义一个Isay接口:

public interface ISay {  String hello();}
  定义ISay接口的实现ChsSayImp,可以定义多个实现
<span style="font-size:18px;">public class ChsSayImp implements ISay {	
	@Override
	public String hello() { return "哈喽";}
}</span>
  ISay接口的另外一个实现EngSayImp

public class EngSayImp implements ISay {
	@Override
	public String hello() { return "Hello";}
}

定义ISay接口与实现的绑定关系

public class SayModule extends AbstractModule {
	@Override
	protected void configure() {
		bind(ISay.class).to(ChsSayImp.class);
	}
}


然后再定义一个接口Iperson

public interface IPerson {
	String say();
	String wirte();
}
定义IPerson的实现类

public class Person implements IPerson {
	@Inject
	private ISay sayImp;//在Iperson的实现类中注入Say的实现
	
	@Override
	public String say() {		
		return sayImp.hello();
	}

	@Override
	public String wirte() {
		return "the write mehod";
	}
}
然后定义Person绑定关系,这里使用PrivateModule来说明其中用法

public class PersonModule extends PrivateModule {
	@Override
	protected void configure() {
		bind(IPerson.class).to(Person.class);
               expose(IPerson.class);	
		install(new SayModule());
	}
}

expose 方法将会使
bind(IPerson.class).to(Person.class); <span style="font-size:18px;">这个私有绑定关系对IPerson接口可见</span>

否则使用injector 无法获取IPerson的实例,一般expose前都会有一个bind方法,expose使这种绑定对module可见


install 就比较容易理解,因为Iperson的实现类中依赖 SayModule ,这里使用install 就是在当前module中添加SayModule依赖 有点类似于 import 引入头文件









相关文章推荐

guice超轻量级依赖注入

  • 2011年08月09日 23:31
  • 866KB
  • 下载

elasticsearch源码分析之使用Guice进行依赖注入与模块化系统

elasticsearch使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁,比spring快很有可能,是不是快那么多就不知...
  • psiitoy
  • psiitoy
  • 2017年06月15日 21:35
  • 143

ElasticSearch源码分析之一:使用Guice进行依赖注入与模块化系统

1. 使用Guice进行依赖注入与模块化系统 elasticsearch使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁...

Guice 学习(七)常量和属性的注入( Constant and Property Inject)

1、常量注入方式package com.guice.ConstantInjectDemo;import com.google.inject.Binder; import com.google.inje...

Guice 学习(二)构造器注入(Constructor Inject)

为了演示下面的支持多参数的构造函数注入,我在这里写了2个接口和其实现类。注意事项写在了程序注释里面。 1、接口 (interface)/* * Creation : 2015年6月30日 */ p...

使用guice进行依赖注入与模块化系统

一、Guice介绍 1,Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。Guice非常小而且快。Guice是类型安全的,它能够对构造函数...
  • acm365
  • acm365
  • 2017年06月25日 11:59
  • 329

Google Guice 入门教程04 - 依赖注入(4)

本章节继续讨论依赖注入的其他话题,包括作用域(scope,这里有一个与线程绑定的作用域例子)、立即初始化(Eagerly Loading Bindings)、运行阶段(Stage)、选项注入(Opti...
  • cwyspy
  • cwyspy
  • 2013年12月30日 16:01
  • 430

依赖注入及Guice简述

Guice简介    Guice是一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。    Guice非常小而且快。    Guice是类型安全的,它能够对构造函数,属性,...
  • ChaosJ
  • ChaosJ
  • 2016年04月13日 13:51
  • 1054

Google Guice 接口多实现 注入

前面几节主要介绍了绑定和注入方式,但是我们看到
  • jing_le
  • jing_le
  • 2014年05月01日 23:29
  • 1116

Google Guice之选项注入

这一节介绍下选项注入,就是可以默认给要注入的
  • jing_le
  • jing_le
  • 2014年05月03日 11:30
  • 697
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Guice 注入--(privateModule,intall(),expose())
举报原因:
原因补充:

(最多只允许输入30个字)