Guice与Spring框架的辨别[Java编程]
本文“Guice与Spring框架的辨别[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
依靠注入,DI(Dependency Injection),它的作用自然没必要多说,说起DI容器,比方spring,picoContainer,EJB容器等等,近日,谷歌诞生了更轻盈的DI容器……Guice!
废话不多讲了,先看看Guice是若何实现注入的吧.
定义一个简单的service接口和它的实现吧!
public interface MyService ...{
void myMethod();
}
public class MyServiceImpl implements MyService ...{
public void myMethod() ...{
System.out.println("Hello,World!");
}
}
以上是最普通的接口和其实现,没什么可说的.
定义一个测试类,这个类里边包含service对象的一个引用,这个对象是需求Guice举行注入的.
import com.谷歌.inject.Inject;
public class Client ...{
MyService service;
@Inject //奉告容器,这里的service对象的引用,需求举行注入
void setService(MyService service) ...{ //这里的办法名字可以肆意定义
this.service = service;
}
public void myMethod() ...{
service.myMethod();
}
}
这里除了加了一个@Inject,和Spring的配置没有任何的辨别,@Inject,是表示对容器说,这里的service需求注射,等到运行的时刻,容器会拿来一个实例给service,完成注射的历程.
定义Guice的Module文件,奉告容器若何举行注入.
import com.谷歌.inject.Binder;
import com.谷歌.inject.Module;
import com.谷歌.inject.Scopes;
public class MyModule implements Module ...{
public void configure(Binder binder) ...{
binder.bind(MyService.class).to(MyServiceImpl.class).in(Scopes.SINGLETON);
// 这句代码的意思是说:运行时动态的将MyServiceImpl对象赋给MyService定义的对象,
并且这个对象是单例的.
}
}
成立测试类
import com.谷歌.inject.Guice;
import com.谷歌.inject.Injector;
public class Test ...{
public static void main(String[] args) ...{
MyModule module = new MyModule();// 定义注射法则
Injector injector = Guice.createInjector(module);// 按照注射法则,生成注射者
Client client = new Client();
injector.injectMembers(client);// 注射者将需求注射的bean,按照法则,把client这个客户端举行注射
client.myMethod();
}
}
运行测试类,掌握台输出:Hello,World!
以上是“Guice与Spring框架的辨别[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |