|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),
依附注进,DI(DependencyInjection),它的感化天然不用多说,说起DI容器,比方spring,picoContainer,EJB容器等等,克日,google出生了更轻便的DI容器……Guice!
空话未几讲了,先看看Guice是怎样完成注进的吧。
界说一个复杂的service接口和它的完成吧!
publicinterfaceMyService...{
voidmyMethod();
}
publicclassMyServiceImplimplementsMyService...{
publicvoidmyMethod()...{
System.out.println("Hello,World!");
}
}
以上是最一般的接口和实在现,没甚么可说的。
界说一个测试类,这个类里边包含service对象的一个援用,这个对象是必要Guice举行注进的。
importcom.google.inject.Inject;
publicclassClient...{
MyServiceservice;
@Inject//告知容器,这里的service对象的援用,必要举行注进
voidsetService(MyServiceservice)...{//这里的办法名字能够恣意界说
this.service=service;
}
publicvoidmyMethod()...{
service.myMethod();
}
}
这里除加了一个@Inject,和Spring的设置没有任何的区分,@Inject,是暗示对容器说,这里的service必要打针,比及运转的时分,容器会拿来一个实例给service,完成打针的历程。
界说Guice的Module文件,告知容器怎样举行注进。
importcom.google.inject.Binder;
importcom.google.inject.Module;
importcom.google.inject.Scopes;
publicclassMyModuleimplementsModule...{
publicvoidconfigure(Binderbinder)...{
binder.bind(MyService.class).to(MyServiceImpl.class).in(Scopes.SINGLETON);
//这句代码的意义是说:运转时静态的将MyServiceImpl对象赋给MyService界说的对象,
并且这个对象是单例的。
}
}
创立测试类
importcom.google.inject.Guice;
importcom.google.inject.Injector;
publicclassTest...{
publicstaticvoidmain(String[]args)...{
MyModulemodule=newMyModule();//界说打针划定规矩
Injectorinjector=Guice.createInjector(module);//依据打针划定规矩,天生打针者
Clientclient=newClient();
injector.injectMembers(client);//打针者将必要打针的bean,依照划定规矩,把client这个客户端举行打针
client.myMethod();
}
}
运转测试类,把持台输入:Hello,World!
<p>
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊 |
|