突然想写篇文章了,在SS3EX中如何读取属性文件,需求是:页面和类中的方法都能访问的全局变量,满足3个因数:1是速度快,2是消耗小,3是读取方便:
1、利用spring框架的内部类PropertyPlaceholderConfigurer
<!-- 定义受环境影响易变的变量 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<!-- 标准配置 -->
<value>classpath*:/application.properties</value>
<!-- 本地开发环境配置 -->
<value>classpath*:/application.local.properties</value>
<!-- 服务器生产环境配置 -->
<!-- <value>file:/var/myapp/application.server.properties</value> -->
</list>
</property>
</bean>
Srping2.5中新加入了‘context’命名空间,这个命名空间让我们能够得到更为简洁的方式来实现属性占位符(property placeholder)的配置:
<context:property-placeholder location="classpath:jdbc.properties"/>
配置文件中的其他BEAN
<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
……
该方法是在项目启动时,就自动由spring初始化了,而且是Spring Singleton范围,速度是在内存中,快,消耗是一次性的,小,读取的时候分为2种情况,类中读取和页面读取,
页面读取要引入定义的BEAN,故在XML文件中还要专门写个BEAN,注入所有的属性,在调用的类中引用这个BEAN。页面的读取必须要经过ACTION的出来才能读取,或者放入
APPLICATION中,或者在action中生成要读取变量的get和set方法,看来读取还是很麻烦的;
2、利用spring框架的内部类PropertiesFactoryBean
<bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:resources/freemarker.properties"/>
</bean>
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 直接将Freemarker.propertyies写在单独的.properties注入进来 -->
<property name="freemarkerSettings" ref="freemarkerConfiguration"/>
<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
<!-- 全局变量部分 -->
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
<entry key="webRoot" value="${webRoot}" />
<entry key="cssRoot" value="${cssRoot}" />
<entry key="jsRoot" value="${jsRoot}" />
</map>
</property>
<property name="defaultEncoding" value="utf-8" />
</bean>
该方法的速度和消耗及类中读取同方法一,页面读取很简单:${webRoot},所以该方法优于第一种。
3、直接写个普通类,例如:Config.java
public class WebConfig {
private final static ResourceBundle rb = ResourceBundle.getBundle("webconfig");
public static String ALIPAY_KEY=rb.getString("ALIPAY_KEY");
……
参数webconfig代表的是文件名为webconfig属性文件
该方法在action中调用ALIPAY_KEY变量时,直接Config.ALIPAY_KEY,由于属性是静态的,所以第一次访问后就进入了内存,速度快,全局的,消耗只一次,小,页面访问时同方法一。
4、通过Spring的工具类在程序中读取属性文件,假设jdbc.properties 是位于类路径下的文件
Properties props = PropertiesLoaderUtils.loadAllProperties("jdbc.properties");
System.out.println(props.getProperty("jdbc.driverClassName"));
通过Struts2自带的标签,去读后台的静态文件(参照博客的另一篇文章
:http://san586.iteye.com/blog/468582),或者用<spring:message>在页面上直接读取。综上所述:同等的条件下,
方法 速度 消耗 类中读取 页面读取
方法一 √ √
方法二 √ √ 方便
方法三 √ √ 方便
方法四 √ √ 方便 方便
分享到:
相关推荐
在SS3EX框架中,UrlRewrite的使用是为了解决传统URL模式中参数过多、过于复杂的问题,提供一种更简洁、更美观的URL表示方式。下面将详细介绍SS3EX中使用UrlRewrite的相关知识点。 首先,URL重写主要是通过配置文件...
总结来说,这个项目是关于将ss3ex转换成一个支持Maven的Java项目,便于管理和构建,同时也可能提供了一种工具,帮助开发者在他们的工作中更高效地使用或集成ss3ex。通过博客链接提供的信息,读者可以深入了解这个...
2007卡耐基软件工程网路教材 SSD3ex2答案
ssd3ex5源码,自己写的,保证100分!
文件列表中的"ss3ex.bmp"可能是一个项目标识或图标,它可能包含了项目的视觉元素,帮助识别项目。而"ss3ex"可能是项目的主干代码或者扩展模块,包含了对SpringSide3核心功能的增强和定制。 这个项目的源代码分析,...
压缩包子文件的文件名称“SSD3”很可能包含了所有与实验相关的文件,比如Java源代码文件(.java)、编译后的类文件(.class)、数据文件、配置文件、README文档或其他辅助材料。这些文件将帮助学习者理解并完成实验...
在C++编程中,显示MP3文件信息通常涉及到解析MP3文件中的元数据,这些元数据包括艺术家、专辑、标题等信息。在这个示例中,使用了名为`libZPlay`的库来实现这一功能。`libZPlay`是一个开源的跨平台库,它提供了音频...
例如,`ch3ex6.m`, `ch3ex5.m`, `ch2ex3.m`, `ch4ex5a.m` 和 `ch2ex4.m` 可能是书中的练习题,每个对应一个特定章节的实例,可能涵盖了不同主题的MATLAB编程实践。 3. **图像处理**: 标签"图像处理与计算机视觉...
博客链接(https://ss3ex.iteye.com/blog/436901)可能包含了关于如何在Maven项目中集成和配置iBatis的实践教程,读者可以通过阅读该博客获取更具体的步骤和示例代码。 综上所述,"maven版ibatis"的主题涵盖了Maven...
以下是对每个文件在网站结构和功能中可能扮演的角色的详细解释: 1. **index.html**:这是网站的首页文件,通常展示网站的核心内容和最新信息。它可能包括关于网站的简介,热门宠物种类,最新的宠物新闻,以及吸引...
【压缩包子文件的文件名称列表】中的文件可能分别对应课程的不同单元,如BI-U03_3EX.ppt可能是第三单元的练习讲解或答案解析,BI-U04_3EX.ppt可能是第四单元的内容。这些PPT文件可能包含了课件展示、习题解析、语言...
同时,它支持离线存储和重要文件的归档,确保数据的完整性和可恢复性。 4. **良好兼容性**:AIT-3Ex具有优秀的前后兼容性,可以与AIT-2等前代产品无缝对接,降低了升级成本,确保了投资的长期有效性。这种兼容性...
3. **期望(数学期望)**(Expectation):随机变量的期望表示其平均值,如第4题中的EX=,第9题中的EX=np=1.6,第13题中的E(z)=3EX-2。 4. **方差(Variance)**:随机变量的方差衡量其数值离散程度,如第4题中的DX...
派特莱LCE-A 多层信号灯2D CAD Pole M2pdf,特点:高节能无需维护的LED多层信号灯,体积小可识别性强,特别匹配于各类中小型设备的外观设计。派特莱特有的混合棱镜切割灯罩,消除了可能存在的视觉盲点,大大提高了远...
Sizzle 是一套前端用智能来处理模块和组件依赖关系的框架。 它遵循 CommonJS 的运行规范来完成对各个模块的动态加载。...Sizzle 框架将被使用在 PJBlog4 新版本中,让后台更加代码逻辑化和模块化。
这个压缩包中的文件主要服务于创建一个功能完备、响应式的手机网站。 1. **index.html**:这是网站的主页模板。通常包含网站的导航、头部信息、主体内容和页脚等元素。在这个文件中,开发者会设置网站的基本布局、...
在Eclipse中创建一个新的项目,例如命名为ejb3ex。然后,在Package Explorer中查看项目的结构。 #### 步骤9:配置Hibernate 选择File -> New -> Other,然后选择Hibernate Configuration File,填写适当的值,添加...