自己学习Guice的例子[一]

网上已经有很多个Guice的例子了...随便贴贴

定义一个接口:

/**
*
*/
package test2;

import com.google.inject.ImplementedBy;

/**
* @author sun.zhang
* @Date 2008-4-18
* @Email myzeer@gmail.com
*
*/
//@ImplementedBy(MockService.class)
public interface Service {

public void sayHello();

}



接口实现类:

/**
*
*/
package test2;

/**
* @author sun.zhang
* @Date 2008-4-18
* @Email myzeer@gmail.com
*
*/
public class ServiceImp implements Service{

public void sayHello() {
System.out.println("Hello World ...");
}

}


模块绑定配置类:

/**
*
*/
package test2;

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

/**
* @author sun.zhang
* @Date 2008-4-18
* @Email myzeer@gmail.com
*
*/
public class TestModule implements Module {

/* (non-Javadoc)
* @see com.google.inject.Module#configure(com.google.inject.Binder)
*/
public void configure(Binder binder) {
binder.bind(Service.class).to(ServiceImp.class);
}

}


客户端类:

/**
*
*/
package test2;

import com.google.inject.Inject;

/**
* @author sun.zhang
* @Date 2008-4-18
* @Email myzeer@gmail.com
*
*/
public class Client {

private Service service;

public Client(){}

@Inject //依赖注入必须的标注
public Client (Service service){
System.out.println("This is constructor injector...");
this.service = service;
}

// 第二种,set注入方式
// @Inject
// public void setClient(Service service){
// System.out.println("This is set injector...");
// this.service = service;
// }

public void sayHello(){
service.sayHello();
}

}


主函数:

/**
*
*/
package test2;

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

/**
* @author sun.zhang
* @Date 2008-4-18
* @Email myzeer@gmail.com
*
*/
public class GuiceMain {

public static void main(String[] args) {

Service service = new ServiceImp();
// Service service = new MockService(); // 第二个service的实现

Client client = new Client(service); //构造器注入
Module module = new TestModule();

Injector injector = Guice.createInjector(module);//向Guice要注射器
injector.injectMembers(client);
client.sayHello();
}
}



说明:
如果当Client.class中使用两次@inject标签,那么Guice将会自动注入两次。如:


@Inject //依赖注入必须的标注
public Client (Service service){
System.out.println("This is constructor injector...");
this.service = service;
}

@Inject
public void setClient(Service service){
System.out.println("This is set injector...");
this.service = service;
}

虽然本意并不是注入两次,只是想提供两个注入方法而已……
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值