最近有空试用了一下Guice,感觉还是比较小巧的,在上面做了个类似Tapestry的Configuration,利用它可以实现类似扩展点的功能。 (可以参考http://tapestry.apache.org/tapestry5/tapestry- ioc/configuration.html)
另外关于网上代码和XML的配置的问题,个人认为不是问题。基于代码的配置就象一个核,如果你喜欢基于XML的配置,只要自己写一个模块,读取XML并使用其中的信息再用基于代码的配置去配置即可,只是基于使用@Inject Annotation 的地方稍微难处理点,但也只需要动态生成类也可以解决这个问题。
使用的时候参考以下这个测试用例:
public class GuiceTest extends TestCase {
public static class ContributorUsingContributorClass extends
ContributableModule {
@Override
protected void configure() {
contribute(new AbstractContributor() {
@Inject
@ConfigFor(AnotherInterface.class)
OrderedConfiguration<string></string> orderedConfiguration;
@Inject
@ConfigFor(AnotherInterface.class)
Configuration<string></string> unorderedConfiguration;
@Inject
@ConfigFor(Service.class)
MappedConfiguration configuration;
@Inject
public void contribute() {
configuration.add("abcd", new Runnable() {
public void run() {
}
});
unorderedConfiguration.add("abc");
orderedConfiguration.add("my", "abc");
}
});
}
}
public void testClient() {
Injector injector = Guice.createInjector(new MyModule());
Client client = injector.getInstance(Client.class);
MockService mock = (MockService) injector.getInstance(Service.class);
client.go();
assertTrue(mock.isGone());
}
public void testConfigurationThroughContributorClass() {
Injector injector = Guice.createInjector(new MyModule(),
new ContributorUsingContributorClass());
MockService mock = (MockService) injector.getInstance(Service.class);
Map map = mock.getConfigMap();
assertNotNull(map);
assertEquals(1, map.size());
}
public void testUnorderedConfiguration() {
Injector injector = Guice.createInjector(new MyModule(),
new ContributorUsingContributorClass());
MockService mock = (MockService) injector.getInstance(Service.class);
Collection<string></string> config = mock.config;
assertNotNull(config);
assertEquals(1, config.size());
assertEquals("[abc]", config.toString());
}
public void testOrderedConfiguration() {
Injector injector = Guice.createInjector(new MyModule(),
new ContributorUsingContributorClass());
MockService mock = (MockService) injector.getInstance(Service.class);
Collection<string></string> config = mock.orderedConfig;
assertNotNull(config);
assertEquals(1, config.size());
assertEquals("[abc]", config.toString());
}
分享到:
相关推荐
博文链接:https://phantom.iteye.com/blog/92184
guice.jar guice.jar guice.jar guice.jar guice.jar guice.jar guice.jar
* What the future has in store, including Guice IDE, the next Guice version and the standardization of Guice's concepts through JSR 299. * How you can build real world, Guice-powered web ...
guice 学习资料,快速掌握guice的编程技巧以及了解其机制。
赠送jar包:guice-3.0.jar; 赠送原API文档:guice-3.0-javadoc.jar; 赠送源代码:guice-3.0-sources.jar; 赠送Maven依赖信息文件:guice-3.0.pom; 包含翻译后的API文档:guice-3.0-javadoc-API文档-中文(简体)-...
赠送jar包:guice-multibindings-3.0.jar; 赠送原API文档:guice-multibindings-3.0-javadoc.jar; 赠送源代码:guice-multibindings-3.0-sources.jar; 赠送Maven依赖信息文件:guice-multibindings-3.0.pom; ...
Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。Guice非常小而且快。Guice是类型安全的,它能够对构造函数,属性,方法(包含任意个参数的任意方法,而不仅仅是setter...
Guice用户中文指南,Guice (读作"juice")是超轻量级的,下一代的,为Java 5及后续版本设计的依赖注入容器
Guice开发手册, Guice中文开发手册
赠送jar包:guice-3.0.jar; 赠送原API文档:guice-3.0-javadoc.jar; 赠送源代码:guice-3.0-sources.jar; 赠送Maven依赖信息文件:guice-3.0.pom; 包含翻译后的API文档:guice-3.0-javadoc-API文档-中文(简体)版...
guice-2.0.jar guice-2.0.jar