最近有空试用了一下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());
}
分享到:
相关推荐
【标题】:“初试Guice测试文件”是一个关于Google Guice框架的学习教程,它通过具体的代码示例来介绍如何在Java应用中使用Guice进行依赖注入。Guice是一款轻量级的依赖注入(DI)框架,它使得Java开发者能够更方便...
guice.jar guice.jar guice.jar guice.jar guice.jar guice.jar guice.jar
### Guice用户中文指南 #### 一、简介 Guice是一个专门为Java 5及后续版本设计的超轻量级依赖注入框架。它旨在简化应用程序组件之间的依赖管理,并提供了一个更为简洁、灵活的方式来处理对象间的耦合关系。Guice的...
Guice-3.0是Guice的一个版本,包含了核心库guice-3.0.jar,以及与Spring和Struts2集成的扩展库guice-spring-3.0.jar和guice-struts2-plugin-3.0.jar。 1. **Guice核心概念**: - **依赖注入**:Guice的核心机制,...
**基于Guice的简单项目** 在Java开发中,依赖注入(Dependency Injection,简称DI)是一种设计模式,它有助于降低代码间的耦合度,提高代码的可测试性和可维护性。Guice是Google提供的一款轻量级的DI框架,它简化了...
**Guice 概述** Guice 是 Google 推出的一款轻量级的依赖注入框架,专为 Java 5 及其后续版本设计。依赖注入(Dependency Injection,简称 DI)是一种设计模式,它允许开发者在不直接创建对象的情况下,将依赖关系...
Google Guice,全称为GoogleInject,是一个轻量级的依赖注入框架,由Google开发并开源。Guice的目标是简化Java应用程序的构造和管理,通过自动装配对象依赖关系,让开发者可以专注于业务逻辑而不是对象的创建和组装...
赠送jar包:guice-4.0.jar; 赠送原API文档:guice-4.0-javadoc.jar; 赠送源代码:guice-4.0-sources.jar; 赠送Maven依赖信息文件:guice-4.0.pom; 包含翻译后的API文档:guice-4.0-javadoc-API文档-中文(简体)版...
### Google Guice: 敏捷轻量级依赖注入框架详解 #### 一、引言与背景 在现代软件开发中,依赖注入(Dependency Injection, DI)已成为构建灵活、可维护和可测试应用程序的重要手段之一。Google Guice作为一款100%...
### Apache Shiro 与 Guice 集成详解 #### 概述 在现代软件开发过程中,集成不同的框架和技术是常见的需求。Apache Shiro 是一个强大的、易用的 Java 安全框架,提供了认证、授权、加密和会话管理功能。而 Google ...
Guice,全称为Google Guice,是一款由Google开发的轻量级依赖注入(Dependency Injection,简称DI)框架,主要用于简化Java应用的初始化和组件管理。依赖注入是一种设计模式,它可以帮助开发者解耦代码,提高软件的...