|
|
CommonTemplate 配置指南 |
|
整个配置体系,从ConfigurationSettings开始,所有配置类全部留有setter注入接口,任何支持setter注入方式的IoC容器均可以完成配置。
一. Properties 配置
默认采用内置的IoC容器初始化配置,详细请参考:org.commontemplate.tools.bean.PropertiesBeanFactory
因为使用properties文件作为配置,所以需遵循java.util.Properties的所有规则,如:# ! = :等符号需转义等。
使用properties文件的优势:各属性项按行展开,便于上下级配置间层级覆盖。
配置规则:
(1) 基本类型:(与Java相似)
(a) null为空值,true, false为布尔值
如:
xxx=true
(b) 以数字开头的为Number,识别后缀L,F,D,S
如:
xxx=10
(c) 以单引号括起的为Character
如:
xxx='A'
(d) 以双引号括起的为String,如果非特殊串,双引号可省
如:
xxx="true"
xxx=abc
(2) 类和对象:
(a) 以.class结尾表示相应Class类元
如:
xxx=com.xxx.XXX.class
(b) 以()结尾表示创建实例,并以实例的Key加点号作为前缀,查找并注入其属性
如:
xxx=com.xxx.XXX()
xxx.yyy=yyy
(c) 以.static结尾表示通过静态字段获取实例,并以实例的Key加点号作为前缀,查找并注入其属性
如:
xxx=com.xxx.XXX.xxx.static
xxx.yyy=yyy
(d) 以().static结尾表示通过静态工厂方法获取实例,并以实例的Key加点号作为前缀,查找并注入其属性
如:
xxx=com.xxx.XXX.getXXX().static
xxx.yyy=yyy
(3) 集合:
(a) 以[]结尾表示List,并以[]前的名称查找List的项
如:
xxx=providers[]
providers[100]=com.xxx.XXXProvider()
providers[200]=com.yyy.YYYProvider()
(注:下标大小可为任意数字,只用于排序,通常都留有一定间隔,使子配置继承时可在中间添加项)
(b) 以{}结尾表示Map,并以{}前的名称查找Map的项
如:
xxx=providers{}
providers{xxx}=com.xxx.XXXProvider()
providers{yyy}=com.yyy.YYYProvider()
(c) 以<>结尾表示Set,并以<>前的名称查找Set的项,类似Map,但忽略Key
如:
xxx=providers<>
providers<xxx>=com.xxx.XXXProvider()
providers<yyy>=com.yyy.YYYProvider()
(注:尖括号内的Key只用于唯一标识,组装Set时将忽略)
(4) 引用:
以$开头表示引用其它配置项
如:
xxx=$yyy
yyy=com.xxx.XXXProvider()
(5) 配置继承:
特殊的Key:@extends表示继承其它配置内容,并用当前配置内容中的相同项覆盖被继承和内容,多个配置用逗号分隔
如:
@extends=parent1.properties,parent2.properties
使用方法:
PropertiesConfigurationLoader.loadConfiguration("xxx.properties"); // 在Classpath中查找
PropertiesConfigurationLoader.loadConfiguration("xxx.properties", resourceLoader); // 指定资源加载器
(注:如果@extends项未配置,则缺省为:@extends=org/commontemplate/tools/commontemplate.properties)
参考配置:
org/commontemplate/tools/commontemplate.properties
org/commontemplate/tools/context.properties
org/commontemplate/tools/template.properties
org/commontemplate/tools/directive.properties
org/commontemplate/tools/expression.properties
配置示例:
# 继承标准web配置,可不配,将根据应用环境缺省继承,如果在web环境下缺省继承以下配置:
@extends=org/commontemplate/tools/web/commontemplate.properties
# 调试模式在遇到断点时将挂起线程单步运行,非调试模式将隐藏部分不重要的异常信息
debug=false
# 国际化信息基名,规则同java.util.ResourceBundle,
# 如:假设基名为xxx/yyy,用户地区为zh_CN,
# 则在ClassPath中先查找xxx/yyy_zh_CN.properties,
# 不存在则查找xxx/yyy_zh.properties, 否则查找xxx/yyy.properties
messagesBasename=xxx/yyy
# null值输出时的默认替换字符串
defaultNullValue=
# boolean值输出时的默认替换字符串
defaultBooleanValue=true|false
# 日期输出时的默认格式
defaultDateFormat=yyyy-MM-dd HH:mm:ss
# 数字输出时的默认格式
defaultNumberFormat=###,##0.###
# 加载模板文件时的默认字符集编码,默认为UTF-8
# 若设置defaultEncoding=null将取当前系统的默认文件编码
defaultEncoding=UTF-8
# 模板文件根目录,模板加载时将以此目录作为根目录
rootDirectory=WEB-INF/views/
# 文件修改检测时间间隔,用于热加载,单位:毫秒(mm)
# 默认为30秒(30000mm),调试时可设成1秒(1000mm)
modificationCheckInterval=30000
# 模板运行日志输出端(可扩展)
loggerProvider=org.commontemplate.util.log.CommonsLoggerProvider()
#loggerProvider=org.commontemplate.util.log.Log4jLoggerProvider()
#loggerProvider=org.commontemplate.util.log.AvalonLoggerProvider()
#loggerProvider=org.commontemplate.util.log.Slf4jLoggerProvider()
#loggerProvider=org.commontemplate.util.log.JdkLoggerProvider()
#loggerProvider=org.commontemplate.util.log.SimpleLoggerProvider()
#loggerProvider=org.commontemplate.util.log.NoneLoggerProvider()
# 磁盘缓存目录,用于缓存模板编译结果
diskCache.directory=WEB-INF/cache/
# 缓存文件前缀
diskCache.filePrefix=
# 缓存文件后缀
diskCache.fileSuffix=.template
# 内存缓存策略,OSCache, EHCache需要另外的配置(可扩展)
memoryCache=org.commontemplate.standard.cache.LruCache()
#memoryCache=org.commontemplate.standard.cache.MruCache()
#memoryCache=org.commontemplate.standard.cache.FifoCache()
#memoryCache=org.commontemplate.standard.cache.WeakCache()
#memoryCache=org.commontemplate.standard.cache.SoftCache()
#memoryCache=org.commontemplate.standard.cache.StrongCache()
#memoryCache=org.commontemplate.standard.cache.OSCache()
#memoryCache=org.commontemplate.standard.cache.EHCache()
#memoryCache=org.commontemplate.standard.cache.JCache()
#memoryCache=org.commontemplate.standard.cache.NoneCache()
# 内存缓存容量,用于:LruCache, MruCache, FifoCache
memoryCache.maxSize=1000
# 自动导入宏模板,以xx为名称空间导入xxx.ctl和yyy.ctl的配置如下:
autoImport{my}=xxx.ctl,yyy.ctl
# $embed, $include, $display等指令查找模板时,是否本地化查找,不设置默认为true
# 如:$include{"xxx.ctl"},假设本地区域信息为zh_CN,首先查找"xxx_zh_CN.ctl",不存在则查找"xxx_zh.ctl",否则查找"xxx.ctl"
localizedLookup=true
# 响应内容类型, 不设置默认为text/html
response.contentType=text/html
配置说明:
(1) 非web应用,如代码生成器等,可以设置:
@extends=org/commontemplate/tools/commontemplate.properties
(2) 如果需去掉磁盘缓存,可以设置:
diskCache=null
(3) 如果需将缓存放在非web应用目录,可以设置:
diskCache.rootDirectory=C:/xxx/
(4) 默认是开启(非void函数)函数调用的,若需要禁止所有函数调用,可以设置:
functionAvailable=false
二. Spring 配置
使用SpringIoC容器组装配置,需spring.jar支持。
配置规则:
Spring配置的使用请参见:
http://www.springframework.org
使用方法:
SpringConfigurationLoader.loadConfiguration("xxx.xml"); // 在Classpath中查找
参考配置:
org/commontemplate/tools/commontemplate-spring.xml
三. 遗留 (注: 将在1.0版本统一删除)
(1) virtualDirectory
起止版本:0.7.8加入,0.8.6废弃
废弃原因:名称歧义
替代方案:rootDirectory
|
|
|