CommonTempalte(
http://www.commontemplate.org)的配置方案一直没定,主API提供的都只是编程调用相应setXXX,addXXX完成相应配置,这两天思考了一下其配置框架的设计。
配置框架需要处理的问题是:
1.可配置完成的工作,一定要能可编程实现,
如果用户不用任何配置文件,而是编程调用相应setXXX,addXXX,应能完成所有配置。
2.扩展类也需要配置
如:cache=org.commontemplate.standard.cache.FIFOCahce
其中,FIFOCahce本身也需要配置信息,如缓存池大小等等
3.配置应该可以放在多个文件中,或者配置文件间可以继承
如:用户写一个配置,但只想覆盖标准配置的部分设置,则应该可以继承标准配置。
4.考虑用Properties,XML等多种配置方式
方案一:
public interface SettingsAware {
/**
* 通过配置初始化,此函数在单线程下被调用
*
* @param settings 相关设置配置项,不可变键值对
*/
public void init(Map<String, String> settings);
}
配置中的类若实现了SettingsAware接口,则配置工厂在创建实例时,将配置信息通过init方法传递给实例。
这样,我们可以:
cache=org.commontemplate.standard.cache.FIFOCahce
cahce.maxSize=1000
可以让FIFOCahce类实现SettingsAware接口,然后在init中读取cahce.maxSize配置。
但这种实现方案违背IoC原则,主动去取配置信息,扩展性较弱,
如换成XML配置,可能init方法应该传入org.w3c.dom.Document之类的配置信息。
方案二:
简单的IoC注入,模仿log4j的配置,
如:
cache=org.commontemplate.standard.cache.FIFOCahce
cahce.maxSize=1000
FIFOCahce不实现接口,而是暴露setMaxSize(int),配置工厂实现层级注入
方案三:
直接使用IoC容器,如:Spring的bean配置,
如果StandardConfiguration类所有配置都提供相应setter方法,包括集合的setter,
则可以使用Spring的bean配置来注入,
实例需的配置也得到根本解决,而且可以替换成其它IoC容器,
<beans>
<bean id="configuration" class="org.commontemplate.standard.StandardConfiguration">
<property name="cache" ref="cache" />
</bean>
<bean id="cache" class="org.commontemplate.standard.cache.FIFOCahce">
<property name="maxSize" value="1000" />
</bean>
</beans>
总结:只要保证整个配置树的可注入性,其配置方式是极度可扩展的,
分享到:
相关推荐
本源码是基于Javascript开发的PDWebpack配置框架设计,包含37个文件,其中包括27个.js文件,3个.css文件,2个.json文件,以及2个.html文件。此外,还包括1个.gitignore文件,1个.LICENSE文件和1个.md文件。该项目是...
这本书涵盖了.NET框架设计的各个方面,包括但不限于设计模式、配置管理以及各种开发工具的使用,旨在帮助开发者提升.NET平台上的编程技能。 **设计模式**是软件工程中的重要概念,它们是经过实践检验的解决方案模板...
根据提供的文件信息,我们可以推断出这是一本关于.NET框架设计的书籍,主要涉及模式、配置与工具等几个方面。接下来,我们将从这几个角度出发,深入解析这些知识点,以期为读者提供一个全面且深入的理解。 ### .NET...
本文将深入探讨基于Java语言的SpringUi启动配置界面框架设计源码,重点分析其设计思路、架构特点以及如何通过这一框架实现开箱即用的配置和运行管理功能。 该框架设计包含了12个Java源文件,这些文件是框架的核心,...
根据提供的文件信息,我们可以推断出这是一本关于.NET框架设计的书籍介绍。接下来,我们将基于这个信息,深入探讨与.NET框架设计相关的知识点。 ### .NET框架简介 .NET框架是由微软开发的一个软件框架,旨在为应用...
《软件框架设计的艺术》这本书是IT行业内非常珍贵的资源,尤其对于那些致力于软件架构设计和框架构建的开发者来说,它是一本不容错过的经典。书中的内容深入浅出,不仅涵盖了软件框架的基本概念,还详细讲解了框架...
基于约定和配置的WebSocket客户端通信框架设计 本文设计了一个可复用、易维护的WebSocket客户端通信框架,解决了WebSocket通信程序编写的重复性和不易维护的问题。该框架由三部分组成:协议配置文件格式、通信流程...
该框架设计了命令解析模块,它具有以下特性: - 模式支持:命令按功能分组,用户可进入不同模式执行特定功能。 - 关键字自动补全:用户输入命令或参数的部分关键字,系统会自动完成匹配,如果有多条匹配项,会列出...
1. 系统总体框架设计:该方案的系统总体框架设计主要是将业务流程控制和视图选择等工作从系统服务器端转移到 Ajax 引擎中完成。该框架包括 Ajax 引擎、配置信息管理和业务流程管理等模块。 2. 配置信息管理:配置...
本文将详细解析SSM框架的配置文件及其jar包,以便于理解和使用。 首先,Spring框架是核心的依赖管理框架,它提供了一个容器来管理对象的生命周期和依赖关系。在本项目中,使用的Spring版本为4.3.9,这是一个稳定且...
Struts2配置文件通常为`struts.xml`,在这里定义Action、结果类型、拦截器等,是整个框架的配置中心。 **Spring** 是一个全面的Java企业级应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)功能,用于...
SpringMVC是Spring框架的一部分,专门用于处理Web请求,实现了Model-View-Controller的设计模式。MyBatis是一个轻量级的持久层框架,它简化了数据库操作,通过XML或注解方式来映射SQL语句。 SSM框架的配置主要分为...
自动化测试框架设计是软件测试中的关键环节,它旨在提高测试效率、降低维护成本,并确保测试的质量。以下是对标题和描述中所述知识点的详细说明: 1. **自动化测试框架的分类**: - **数据驱动框架**:适用于测试...
配置说明文件则会指导开发者如何设置和配置框架,以满足不同的开发环境要求。 基于Delphi的WebMVC框架设计源码的推出,为Delphi语言的Web应用开发提供了新的可能。它不仅能够帮助开发者快速搭建起Web应用的架构,还...
下面将详细讲解SSH框架的搭建和配置。 1. **Struts框架**: Struts是MVC(Model-View-Controller)设计模式的实现,主要用于控制应用程序的流程。在Struts框架中,`struts-config.xml`文件是核心配置文件,用于...
本项目的源码库是一个基于Java语言开发的Maple框架设计,包含了丰富多样的文件类型,体现了框架设计的完整性和多层次结构。 项目的源码结构清晰地划分了不同的模块和组件。例如,`maple-microservice-integration` ...
这个框架集合了Spring的依赖注入、Struts的MVC设计模式以及Hibernate的对象关系映射能力,为开发者提供了强大的后端支持。在本实例中,我们将探讨SSH框架的配置文件及其作用。 1. **log4j.properties**:这是日志...
在“SSM多数据源配置框架”中,我们通常会遇到以下关键概念和步骤: 1. **数据源配置**:在Spring配置文件中,我们需要定义多个数据源bean,每个数据源对应一个数据库连接。这可能包括Druid或HikariCP这样的连接池...
【MyBean轻量级配置框架】是一个专门为Delphi开发者设计的开源项目,旨在提供一个简单易用、功能强大的配置管理工具。在软件开发过程中,尤其是大型应用,配置管理是不可或缺的一部分,它允许开发者灵活地调整应用...