Spring 配置详解


想必用过 Spring 的程序员们都有这样的感觉,Spring 把逻辑层封装的太完美了(个人感觉 View 层封装的不是 很好)。以至于有的初学者都不知道 Spring 配置文件的意思,就拿来用了。所以今天我给大家详细解释一下 Spring 的 applicationContext.xml 文件。Ok,还是通过代码加注释的方式为大家演示: 以下是详解 Spring 的 applicationContext.xml 文件代码: com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/tie?useUnicode=true&characterEncoding=utf-8 root 123 com/alonely/vo/User.hbm.xml 采用 struts+hibernate+spring 开发的一个 web 系统--配置文件介绍 从配置文件说起 在 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 下 这些配置信息是整个系统的装配总线,通过这些 x ml 的配置,把所有的资源串在了一起。 这里还要强调一个信息,这些配置文件都是按照功能模块来划分的,比如现在讲解的这个系统中,除了默认的 default 外,还划分了 order(订单处理系统)、admin(后台管理系统),这样设置的优势在于很好的扩展系统, 降低耦合性,同时条理也比较清晰,便于管理。 下面分别介绍一下各个主要的配置文件内容 1、struts(struts-config 文件夹下) struts-config 文件夹下主要有 struts-config-default.xml、struts-conf ig-admin.xml、struts-config-order.x ml 三个 配置文件 这里放置的是有关 struts 的配置信息,比如 form-bean、action,有关 form-bean 的配置和一般的 struts 程序没 有什么两样,这里需要说明的是 action 的配置 这里举例一个配置片断: 注意里面的 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 技术来实现的,举例如下: 通过 Spring 框架的 ContextLoaderPlugIn,把 action 类交由 Spring 容器来管理 这里需要说明的一点是:是否需要在 struts-config-default.xml 文件中一起加载所有的 action-serv lets 信息,还 是对应着分别加载。当然现在的系统中是一起加载的,不过如果分开加载,也可以很好的分模块开发,这边只是 探讨,作个说明而已。 实现 Tiles 技术的嫁接 在 Struts 框架中采用 Validator 框架的验证机制 2、spring(app-config 文件夹下) app-config 文件夹下主要有 applicationContext_default.xml、applicationContext_admin.x ml、 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-conf ig 文件夹下) action-servlets-config 文件夹下主要有 action-servlets-default.xml、action-servlets-admin.x ml、 action-servlets-order.xml 这里是 action 在 spring 容器下的配置,举例如下: 这里的 name 属性"/loginAction"和相应的 struts 配置文件中的 path 属性要一一对应起来,这样 action 类的生 命周期将交由 spring 容器来管理了 4、模版技术(tiles-config 文件夹下) 5、验证技术(validation-config 文件夹下) 这两项就不在多做阐述了,应该应用的比较多了 除了 WEB-INF/config 下的五大类配置文件外,对其他一些需要用到的配置信息作一个比较简单的介绍 hibernate.cfg.xml: 设置 pojo 信息,相关的 SessionFactory 配置已经移植到了 Spring 的 dataAccessContext-local.x ml 配置文件中 去了 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-conf ig 文件夹下)、模版技术(tiles-conf ig 文件夹下)、验 证技术(validation-config 文件夹下)如何被加载呢? struts 和 spring 的结合处理(action-servlets-config 文件夹下)通过 struts(struts-config 文件夹下)下的 struts-config-default.xml 加载 模版技术(tiles-config 文件夹下)、验证技术(validation-conf ig 文件夹下)分别通过 struts(struts-config 文 件夹下)下的各个对应的功能模块配置文件加载 通过以上两步加载,把五个大的配置信息都加载到系统中去了 以上是关系系统配置文件的一些说明,希望通过这些能对整个系统的架构有一个比较清晰的了解 发表时间:2007-06-06 关键字: struts2,hibernate,spring 相关文章:  t4@spring@hibernate 的结合问题  spring 入门编程问题集锦  不整合 hibernate 和 spring,只想用 spring 的事务处理,配置文件... 推荐圈子: GT-Grid 更多相关推荐 虽然是简单的用户登录,但东西一点不少,基于 MVC 原理实现,共分 DAO 层, SERVICE 层,ACTION 层和 WEB 层,其中 DAO 和 SERVICE 层都有各自的接口。 今天主要讲解配置文件的代码,我学习实例,喜欢从控制层出发,然后用到了哪 些类或者 JSP,再一一扯“蛋”扯出来。 当然,还是先看 web.xml xml 代码 1. 2. 4. 5. 6. contextConfigLocation 7. classpath*:spring/*.xml 8. 9. 10. 11. 12. 13. encodingFilter 14. org.springframework.web.filter.CharacterE ncodingFilter 15. 16. encoding 17. UTF-8 18. 19. 20. 21. 22. hibernateFilter 23. org.springframework.orm.hibernate3.suppor t.OpenSessionInViewFilter 24. 25. 26. 27. eXtremeExport 28. org.extremecomponents.table.filter.Export Filter 29. 30. 31. encodingFilter 32. *.do 33. 34. 35. encodingFilter 36. *.jsp 37. 38. 39. hibernateFilter 40. *.do 41. 42. 43. 44. 45. 46. org.springframework.web.context.Context LoaderListener 47. 48. 49. 50. 51. org.springframework.web.util.Introspect orCleanupListener 52. 53. 54. 55. 56. 57. 10 58. 59. 60. 61. 东西很简单,无非是配置一些过滤器呀,监听器的。主要讲一下 openSessionInViewFilter 吧,假设在你的应用中 Hibernate 是通过 spring 来 管理它的 session.如果在你的应用中没有使用 OpenSessionInViewFilter 或者 OpenSessionInViewInterceptor。session 会在 transaction 结束后关闭,此时 会抛出 session is close 的异常。关于这方面的知识,值得大家去找一下相关 资料仔细阅读。 strut2.xml xml 代码 1. 2. "-//Apache Software Foundation//DTD Struts Configuratio n 2.0//EN" 3. "http://struts.apache.org/dtds/struts-2.0.dtd"> 4. 5. 6. 7. 8. 9. /login_success.jspresult> 10. /login.jspresult> 11. action> 12.package> 13. 14.struts> 可能注意到了,这里的 Action 交给 SPRING 来管理了。所以我们看一下 application.xml 的代码吧 xml 代码 1. xml version="1.0" encoding="UTF-8"?> 2. > 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. bean> 27. 28. 30. 31. 32. property> 33. 34. 35. org.hibernate.dia lect.Oracle9Dialectprop> 36. trueprop> 37. truep rop> 38. a utoprop> 39. trueprop> 40. props> 41. property> 42. 43. 44. 45. classpath:com/caitong/pingou/bean 46. value> 47. list> 48. property> 49. bean> 50. 51. 52. 53. 54. property> 55. bean> 56. 57. 58. 59. 60. 61. 62. PROPAGATION_REQUIREDprop> 63. PROPAGATION_REQUIRED,readOnly prop> 64. props> 65. property> 66. bean> 67. 68. 69. 70. *Servicevalue> 71. property> 72. 73. 74. transactionInterceptorvalue> 75. 76. list> 77. property> 78. bean> 79. 80. 81. 82. bean> 83. 84. 85. 86. 87. property> 88. bean> 89. 91. bean> 92. 93. 95. bean> 96. 97. 99. bean> 100. beans> 应该说 SPRING 太强大了,以至于一个配置文件可以解决任何一件事情。简单介 绍一下这个配置文件吧,例子用的是 c3p0 的数据库链接池,hibernate 的配置 文件也都集成在这里了,如果细心的读者,可能注意到了事务管理模块。是的, 本例的事务管理是由 spring 来管理,而且集中在 service 层 xml 代码 1. 2. *Servicevalue> 3. property> 有人可能提出问题,为什么非得要放在 service 层,而不是 dao 层,应该说,事 务管理有一个不成文的规定,尽量将问题放在上层处理。 然后每个类由 SPRING 来管理,并且 autowire="byName"来寻找依赖注入的 bean。 所有的 xml 文件都已经配置完了,其实最重要也是这个,XML 文件将是框架的一 个趋势,掌握了它,其实你已经打开了这个框架的门。
还剩11页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

2471989328

贡献于2014-07-17

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf