Google Guice 绑定2

上一章简单介绍了,如何使用Guice框架来完成接口(父类)和具体的实现类(子类)之间的关联。通过MyModule中:

binder.bind(Hello.class).to(HelloImpl.class).in(Singleton.class) ;

来实现关联关系,这节介绍通过注解来实现关联关系

(1)首先还是Hello.java接口(注意类头上的注解,描述了这个接口要绑定的实现类)

package guice.binder;

import com.google.inject.ImplementedBy;

/**
 * 
 * @author Java_Le
 * @Date 2014-5-1下午09:38:50
 * @ClassName Hello.java
 */
@ImplementedBy(HelloImpl.class)
public interface Hello {
	
	void sayHello() ;
}
(2)Hello.java这个接口的具体实现类:HelloImpl.java(类头上的注解,这类是单列还是动态创建)

package guice.binder;

import com.google.inject.Singleton;

/**
 * 
 * @author Java_Le
 * @Date 2014-5-1下午10:03:51
 * @ClassName HelloImpl.java
 */
@Singleton
public class HelloImpl implements Hello{

	@Override
	public void sayHello() {
		System.out.println("HelloImpl say hello");
	}
}
(3)我们的MyModule实现类(具体的绑定关系被注释了)

package guice.binder;

import com.google.inject.Binder;
import com.google.inject.Module;

public class MyModule implements Module{

	@Override
	public void configure(Binder binder) {
		//将借口hello.java 绑定到实现类HelloImpl.java上
		//Singleton:表示是scope是单列的,Guice中类的scope只有两类,单例,或者每次都是new的一个新的对象
//		binder.bind(Hello.class).to(HelloImpl.class).in(Singleton.class) ;
	}

}
(4)Client测试( 这个类和上一节没什么变化)

package guice.binder;

import com.google.inject.Guice;
import com.google.inject.Injector;

public class Client {
	public static void main(String[] args) {
		
		Injector in = Guice.createInjector(new MyModule()) ;
		
		Hello hello = in.getInstance(Hello.class) ;//hello -->HelloImpl实例
		hello.sayHello() ;
	}
}
 输出结果:

HelloImpl say hello

输出的结果依然还是HelloImpl say hello,其实,Guice框架不仅可以维护接口和具体的实现类之间的绑定关系,还可以维护父类和之类之间的绑定关系,同样的你完全可以把类的创建交给Guice框架去管理(免去了手动new 的过程)。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值