1,首先,了解一下Guice,Guice是Google开发人员贡献的一个DI框架,免费而且开源,符合当今潮流。可以在Google Guice的主页看到此项目的详细信息。根据资料,Google最大的一个应用AdWords也在应用这个框架。何为“DI”,看看Spring就知道,07年Java程序员个个在叫“春”。下面首先通过一个sample了解一下Guice
2,这个Sample主要包括如下几部分
1)服务接口,可以简单理解为提供某种服务的一个接口。
2)服务的实现,可以理解为,将来这个就是要用来注入到目标类中的真正的一个实现
3)一个客户类,这个类就是被注入上面的服务实现,以达到使用此服务的目标
4)配置模块类,在这里配置相关的注入
5)测试类,跟任何测试框架无关,仅仅是一个小程序,来监测我们的Guice
源代码1,服务接口
public interface service
{
void service();
}
{
void service();
}
源代码2,服务实现
public class ServiceImpl implements Service
{
public void service()
{
System.out.println("Hello Guice!");
}
}
{
public void service()
{
System.out.println("Hello Guice!");
}
}
源代码3,客户类
import com.google.inject.Inject;
public class Client
{
private final Service service;
@Inject
public Client(Service service)
{
this.service = service;
}
public void service()
{
service.service();
}
}
源代码4,配置类
public class Client
{
private final Service service;
@Inject
public Client(Service service)
{
this.service = service;
}
public void service()
{
service.service();
}
}
源代码4,配置类
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
public class Module extends AbstractModule
{
protected void configure()
{
bind(Service.class)
.to(ServiceImpl.class)
.in(Scopes.SINGLETON);
}
}
import com.google.inject.Scopes;
public class Module extends AbstractModule
{
protected void configure()
{
bind(Service.class)
.to(ServiceImpl.class)
.in(Scopes.SINGLETON);
}
}
源代码5,测试类
import com.google.inject.Guice;
import com.google.inject.Injector;
public class GuiceTest
{
public static void main(String [] args)
{
import com.google.inject.Injector;
public class GuiceTest
{
public static void main(String [] args)
{
Injector injector = Guice.createInjector(new Module());
Client client = injector.getInstance(Client.class);
client.service();
}
}
Client client = injector.getInstance(Client.class);
client.service();
}
}
以上,一个小小的Guice示例就完成了,当然要想跑起来,还必须加上Guice的包,并且你的JDK要在5.0以上。
3,写完了一个小小的Guice应用后,就觉得有点不味。java界出现了各种各样的免费的开源的框架,非常的不错,大大方便了我们这些程序员。但是紧跟着的就是盲从,当Spring出来的时候,很多文章开始鼓吹Spring怎么怎么先进,利用xml而不是代码来实现DI的配置,使得代码的耦合性降到最低。Guice出来后,又看到很多地方开始在比较Guice和Spring,有的文章大吹Guice速度快,完全基于代码实现,免去XML的学习门槛等等。在DI的实现方面确实可以比较比较这两个框架有什么异同,但是并不代表一个绝对超过另外一个。存在即是合理,每个框架都有它们所适用的地方。用好它们才是最终的目标。
0 Responses to "简单尝试Google的Guice"
Post a Comment