`
san586
  • 浏览: 134736 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

SS3EX中读取属性文件的比较

阅读更多
突然想写篇文章了,在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

    在SS3EX框架中,UrlRewrite的使用是为了解决传统URL模式中参数过多、过于复杂的问题,提供一种更简洁、更美观的URL表示方式。下面将详细介绍SS3EX中使用UrlRewrite的相关知识点。 首先,URL重写主要是通过配置文件...

    发布ss3ex的maven版本,取名叫sango吧

    总结来说,这个项目是关于将ss3ex转换成一个支持Maven的Java项目,便于管理和构建,同时也可能提供了一种工具,帮助开发者在他们的工作中更高效地使用或集成ss3ex。通过博客链接提供的信息,读者可以深入了解这个...

    SSD3ex2答案

    2007卡耐基软件工程网路教材 SSD3ex2答案

    ssd3ex5练习5

    ssd3ex5源码,自己写的,保证100分!

    springside3+ext源代码

    文件列表中的"ss3ex.bmp"可能是一个项目标识或图标,它可能包含了项目的视觉元素,帮助识别项目。而"ss3ex"可能是项目的主干代码或者扩展模块,包含了对SpringSide3核心功能的增强和定制。 这个项目的源代码分析,...

    SSD3 EX1-7

    压缩包子文件的文件名称“SSD3”很可能包含了所有与实验相关的文件,比如Java源代码文件(.java)、编译后的类文件(.class)、数据文件、配置文件、README文档或其他辅助材料。这些文件将帮助学习者理解并完成实验...

    C++实现显示MP3文件信息的方法

    在C++编程中,显示MP3文件信息通常涉及到解析MP3文件中的元数据,这些元数据包括艺术家、专辑、标题等信息。在这个示例中,使用了名为`libZPlay`的库来实现这一功能。`libZPlay`是一个开源的跨平台库,它提供了音频...

    matlab开发-用matlab解题

    例如,`ch3ex6.m`, `ch3ex5.m`, `ch2ex3.m`, `ch4ex5a.m` 和 `ch2ex4.m` 可能是书中的练习题,每个对应一个特定章节的实例,可能涵盖了不同主题的MATLAB编程实践。 3. **图像处理**: 标签"图像处理与计算机视觉...

    maven版ibatis

    博客链接(https://ss3ex.iteye.com/blog/436901)可能包含了关于如何在Maven项目中集成和配置iBatis的实践教程,读者可以通过阅读该博客获取更具体的步骤和示例代码。 综上所述,"maven版ibatis"的主题涵盖了Maven...

    宠物网站.zip

    以下是对每个文件在网站结构和功能中可能扮演的角色的详细解释: 1. **index.html**:这是网站的首页文件,通常展示网站的核心内容和最新信息。它可能包括关于网站的简介,热门宠物种类,最新的宠物新闻,以及吸引...

    新视角研究生英语读说写1部分答案

    【压缩包子文件的文件名称列表】中的文件可能分别对应课程的不同单元,如BI-U03_3EX.ppt可能是第三单元的练习讲解或答案解析,BI-U04_3EX.ppt可能是第四单元的内容。这些PPT文件可能包含了课件展示、习题解析、语言...

    AIT存储助力盲人护助中心数据保护成功应用案例

    同时,它支持离线存储和重要文件的归档,确保数据的完整性和可恢复性。 4. **良好兼容性**:AIT-3Ex具有优秀的前后兼容性,可以与AIT-2等前代产品无缝对接,降低了升级成本,确保了投资的长期有效性。这种兼容性...

    练习二(龙版)答案.doc

    3. **期望(数学期望)**(Expectation):随机变量的期望表示其平均值,如第4题中的EX=,第9题中的EX=np=1.6,第13题中的E(z)=3EX-2。 4. **方差(Variance)**:随机变量的方差衡量其数值离散程度,如第4题中的DX...

    派特莱LCE-A 多层信号灯2D CAD Pole M2.pdf

    派特莱LCE-A 多层信号灯2D CAD Pole M2pdf,特点:高节能无需维护的LED多层信号灯,体积小可识别性强,特别匹配于各类中小型设备的外观设计。派特莱特有的混合棱镜切割灯罩,消除了可能存在的视觉盲点,大大提高了远...

    Sizzle v4.0.0.59

    Sizzle 是一套前端用智能来处理模块和组件依赖关系的框架。 它遵循 CommonJS 的运行规范来完成对各个模块的动态加载。...Sizzle 框架将被使用在 PJBlog4 新版本中,让后台更加代码逻辑化和模块化。

    手机wap源码模板 (783).zip

    这个压缩包中的文件主要服务于创建一个功能完备、响应式的手机网站。 1. **index.html**:这是网站的主页模板。通常包含网站的导航、头部信息、主体内容和页脚等元素。在这个文件中,开发者会设置网站的基本布局、...

    JBoss Seam Tutorial

    在Eclipse中创建一个新的项目,例如命名为ejb3ex。然后,在Package Explorer中查看项目的结构。 #### 步骤9:配置Hibernate 选择File -&gt; New -&gt; Other,然后选择Hibernate Configuration File,填写适当的值,添加...

Global site tag (gtag.js) - Google Analytics