已经转移到
好·色之徒--我的博客、我的生活 从配置文件说起
在WEB-INF/config下有多种配置文件,这里作个介绍,对项目的开发很有意义
主要涉及到了struts(struts-config文件夹下) 、spring(app-config文件夹下) 、struts和spring的结合处理(action-servlets-config文件夹下) 、 模版技术(tiles-config文件夹下) 、验证技术(validation-config文件夹下)
到这里,或许会留意到没有提及hibernate,有关hibernate的设置,也是通过spring来配置的,在后面的spring文件中会看到,有关hibernate.cfg.xml则存放在classpath下,需要用到的hibernate属性配置信息hibernate.properties也存放在classpath下
这些配置信息是整个系统的装配总线,通过这些xml的配置,把所有的资源串在了一起。
这里还要强调一个信息,这些配置文件都是按照功能模块来划分的,比如现在讲解的这个系统中,除了默认的default外,还划分了order(订单处理系统)、admin(后台管理系统),这样设置的优势在于很好的扩展系统,降低耦合性,同时条理也比较清晰,便于管理。
下面分别介绍一下各个主要的配置文件内容
1、struts(struts-config文件夹下)
struts-config文件夹下主要有struts-config-default.xml、struts-config-admin.xml、struts-config-order.xml三个配置文件
这里放置的是有关struts的配置信息,比如form-bean、action,有关form-bean的配置和一般的struts程序没有什么两样,这里需要说明的是action的配置
这里举例一个配置片断:
type="org.springframework.web.struts.DelegatingActionProxy"
scope="request" validate="true" input="/WEB-INF/jsp/login.jsp">
注意里面的type属性,这里设置的是org.springframework.web.struts.DelegatingActionProxy,正是通过它来使得和spring很好的结合起来,这里你会发现没有具体的action类,它是通过struts和spring的结合处理(action-servlets-config文件夹下)的配置文件来实现的,这样action类也纳入到了spring容器的管理体系中去了。
struts和spring的结合就是这样来实现的,当然除了这种方式以外还有其他的,可以参考:
关于struts中validate的几种情况除了以上的配置信息外,还有几个重要的配置,它是结合Spring、Tiles、Validator等框架的润滑剂,主要是通过Struts的plug-in技术来实现的,举例如下:
className="org.springframework.web.struts.ContextLoaderPlugIn">
value="/WEB-INF/config/action-servlets-config/action-servlets-default.xml
/WEB-INF/config/action-servlets-config/action-servlets-order.xml
/WEB-INF/config/action-servlets-config/action-servlets-admin.xml" />
通过Spring框架的ContextLoaderPlugIn,把action类交由Spring容器来管理
这里需要说明的一点是:是否需要在struts-config-default.xml文件中一起加载所有的action-servlets信息,还是对应着分别加载。当然现在的系统中是一起加载的,不过如果分开加载,也可以很好的分模块开发,这边只是探讨,作个说明而已。
value="/WEB-INF/config/tiles-config/tiles-defs-default.xml" />
实现Tiles技术的嫁接
value="/WEB-INF/config/validation-config/validator-rules-default.xml,
/WEB-INF/config/validation-config/validation-default.xml" />
在Struts框架中采用Validator框架的验证机制
2、spring(app-config文件夹下)
app-config文件夹下主要有applicationContext_default.xml、applicationContext_admin.xml、applicationContext_order.xml、applicationContext.xml、dataAccessContext-local.xml
这里主要是设置系统所需要的业务逻辑bean,完成符合spring-beans.dtd的定义规则
分别解释一下各个配置文件的主要用途:
applicationContext.xml--定义一些共通的bean,列举如下:
AbstractFacadeBean(com.iplan.portal.framework.base.BaseFacade--所有Facade的抽象类,主要完成对DAO的配置,以便为所有FACADE提供DAO支持)
AbstractServiceBean(com.iplan.portal.framework.base.BaseService--所有ServiceImp的抽象类,主要完成对DAO的配置,以便为所有ServiceImp提供DAO支持)
AppRelationCore(com.iplan.portal.framework.base.AppRelationCore--系统各模块间关系的维护类,既所有模块暴露的Facade通过此类来访问,每添加一个Facade模块,需要在这里追加)
baseTransactionProxy(通用的事务代理,这样所有的Service、Facade都可以继承这个事务代理)
这里定义的都是些基础设施,可以看到都是framework.base下的类
dataAccessContext-local.xml--定义本地数据源信息
说明:为了系统运作的简单化,这里设置了本地数据源信息(以local为标志),当然如果为了分布式运作,采用jta事务,可以定义相应的设置 这里主要定义了数据源dataSource、hibernate的SessionFactory(mySessionFactory)、hibernate的事务管理器
(myTransactionManager)、共通的访问数据库接口commonDAO(com.iplan.portal.framework.base.hibernate.CommonDAO)
以上两个都是系统运作的基础,其间有一些联系,大家可以参照一下具体的配置文件即可
其它的三个配置文件都是按照功能模块来划分的,都是具体业务方面的信息,这里不在详细描述,可以自行参考配置文件
3、struts和spring的结合处理(action-servlets-config文件夹下)
action-servlets-config文件夹下主要有action-servlets-default.xml、action-servlets-admin.xml、action-servlets-order.xml
这里是action在spring容器下的配置,举例如下:
class="com.iplan.portal.start.action.LoginAction">
这里的name属性"/loginAction"和相应的struts配置文件中的path属性要一一对应起来,这样action类的生命周期将交由spring容器来管理了
4、模版技术(tiles-config文件夹下)
5、验证技术(validation-config文件夹下)
这两项就不在多做阐述了,应该应用的比较多了
除了WEB-INF/config下的五大类配置文件外,对其他一些需要用到的配置信息作一个比较简单的介绍
hibernate.cfg.xml:
设置pojo信息,相关的SessionFactory配置已经移植到了Spring的dataAccessContext-local.xml配置文件中去了
hibernate.properties
设置一些有关hibernate的属性信息,比如:driver、url、username、password、dialect、Connection Pool等等
ApplicationResources.properties
i18n国际化资源信息
displaytag.properties
display标签的配置信息
default-db.script、default-db.properties默认的hsqldb的数据结构、数据
log4j.properties日志配置文件
最后,还有一个非常重要的配置信息:web.xml
有关于各种信息的配置,web.xml里面有比较详细的说明,这里就不在多阐述了
这里描述一下应用服务器启动后,如何加载这些配置信息已供应用系统运作的
第一步,当然是读取web.xml中的配置信息,可以启动
Log4j信息
通过ContextLoaderListener、读取contextConfigLocation信息(spring(app-config文件夹下)),加载springapp-config文件夹下的配置信息
HSQLDB数据库
启动struts的ActionServlet,相应的config被加载
第二步,从第一步可以看到struts(struts-config文件夹下)、spring(app-config文件夹下)都已经被加载
那么struts和spring的结合处理(action-servlets-config文件夹下)、模版技术(tiles-config文件夹下)、验证技术(validation-config文件夹下)如何被加载呢?
struts和spring的结合处理(action-servlets-config文件夹下)通过struts(struts-config文件夹下)下的struts-config-default.xml加载 模版技术(tiles-config文件夹下)、验证技术(validation-config文件夹下)分别通过struts(struts-config文件夹下)下的各个对应的功能模块配置文件加载
通过以上两步加载,把五个大的配置信息都加载到系统中去了
以上是关系系统配置文件的一些说明,希望通过这些能对整个系统的架构有一个比较清晰的了解
已经转移到
好·色之徒--我的博客、我的生活