简单尝试Google的Guice

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();
}

源代码2,服务实现
public class ServiceImpl implements Service
{
        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,配置类
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);
        }
}

源代码5,测试类
import com.google.inject.Guice;
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();
        }
}

以上,一个小小的Guice示例就完成了,当然要想跑起来,还必须加上Guice的包,并且你的JDK要在5.0以上。

3,写完了一个小小的Guice应用后,就觉得有点不味。java界出现了各种各样的免费的开源的框架,非常的不错,大大方便了我们这些程序员。但是紧跟着的就是盲从,当Spring出来的时候,很多文章开始鼓吹Spring怎么怎么先进,利用xml而不是代码来实现DI的配置,使得代码的耦合性降到最低。Guice出来后,又看到很多地方开始在比较Guice和Spring,有的文章大吹Guice速度快,完全基于代码实现,免去XML的学习门槛等等。在DI的实现方面确实可以比较比较这两个框架有什么异同,但是并不代表一个绝对超过另外一个。存在即是合理,每个框架都有它们所适用的地方。用好它们才是最终的目标。

0 Responses to "简单尝试Google的Guice"