guice据称比spring运行快100倍,我觉得网上是在瞎忽悠的。guice的实现是借助jdk1.5的Annotation特性实现的,如果你的jdk还是1.4请不要用哦
下面带大家一起helloworld。
新建一个web工程(就是为了方便jar的部署):guiceDemo
引入下面的jar文件
aopalliance.jar
guice-1.0.jar
guice-servlet-1.0.jar
guice-spring-1.0.jar
guice-struts2-plugin-1.0.jar
本类只用到guice-1.0.jar当然,为了测试要引入junit.jar
现在开始写第一种实现,用Module实现。
创建接口HelloGuice.java
package org.lee.guice.module.demo;
public interface HelloGuice {
public void sayHello();[/color]
}
接口实现类HelloGuiceImpl.java
package org.lee.guice.module.demo;
public class HelloGuiceImpl implements HelloGuice {
public void sayHello() {
System.out.println("hello word");
}
}
创建HelloGuiceModule.java(这里我告诉大家,因为它比spring快100倍其实就是说ioc。这个文件替代了spring的配置文件)
package org.lee.guice.module.demo;
import com.google.inject.Binder;
import com.google.inject.Module;
public class HelloGuiceModule implements Module{
@Override
public void configure(Binder binder) {
binder.bind(HelloGuice.class).to(HelloGuiceImpl.class);
}
}
测试类TestGuice.java
package org.lee.guice.module.demo;
import com.google.inject.Guice;
import com.google.inject.Injector;
import junit.framework.TestCase;
public class TestGuice extends TestCase{
public void testHelloGuice(){
Injector injector = Guice.createInjector(new HelloGuiceModule());
HelloGuice helloGuice = injector.getInstance(HelloGuice.class);
helloGuice.sayHello();
}
}
运行结果helloword。
我在测试的是很发现他很慢,当然比spring快多了
用注解的方式注入,发现不是一般的快,那是相当的快
第二种实现:
业务接口
package org.lee.guice.Annotation.demo;
import com.google.inject.ImplementedBy;
@ImplementedBy(HelloGuiceImpl.class)
public interface HelloGuice {
public void sayHello();
}
业务接口实现:
package org.lee.guice.Annotation.demo;
public class HelloGuiceImpl implements HelloGuice {
@Override
public void sayHello() {
System.out.println("hello word");
}
}
测试
package org.lee.guice.Annotation.demo;
import com.google.inject.Guice;
import com.google.inject.Injector;
import junit.framework.TestCase;
public class TestGuice extends TestCase{
public void testHelloGuice(){
Injector injector = Guice.createInjector();
HelloGuice helloGuice = injector.getInstance(HelloGuice.class);
helloGuice.sayHello();
}
}
结果测试时helloword
第二种实现和第一种的区别在于注入通过注解如入的