项目初期搭建总结

首先先得确定整体架构,一老同事这样跟我说

如果是应用类系统采用hibernate+spring,前台用extjs

如果是网站,可以直接用jsp+jquery,mvc直接自己写一个urlmapping

我因为项目紧急,加上业务比较简单,仅采用spring

搭建好spring架构后,以下简单说一下花时间较多的地方。

一、持久层

其中涉及2个问题

第1个为选用连接池

我分别看了dbcp,proxool的源代码以及他们机制

dbcp是spring推荐使用,可能因为和spring无缝对接吧,但是网上评价不高,

而且依赖appachecommon-pool

proxool有重连功能,且稳定性较高

因为赶进度,直接采用spring推荐的dbcp,因为没大规模测试,暂时还没发现有什么问题

第2个就是多数据库源,网上有很多例子,spring自带DynamicDataSource

二:日志记录

这个问题花了蛮多时间研究,因为之前对log4j一直停留在会用,

但是具体原理和配置一直没弄明白,这次研究还是收获蛮大,原来我以前接触的项目

其中用的log4j都没用到它的核心,而且使用也不是按作者本意进行。

log4j有2个概念,logger和appender,一个logger可以指定多个appender,一个appender可以服务多个logger的核心理念就是根据包名来控制日志级别,如我能控制到某个包如(org.springframework)下显示级别,这对我们调试问题提供了很大的灵活度

appender主要控制输出,包括输出文件,格式等

关于日志还有一个概念,在appache下有2个子项目

一个是appache.common.logger类似hibernate的stf日志门面,

一个是appache.logger

第一个是日志通用接口,日志门面,提供简单的控制台日志输出

第二可以说是第一个的实现,我们面向第一个进行编程,具体实现看个人喜好,可以采用

appache.logger或者logback

三:单元测试

说到单元测试,得说一些项目目录结构,我是采用src/main和sr/test

然后单元测试类的包名和被测试类一致

采用spring进行单元测试主要就是考虑如何加载applicationcontext

我抽想一个顶层测试类,该类继承AbstractJUnit4SpringContextTests,然后@ContextConfiguration进行置文件,且静态调用环境初始化方法(因为我想把db配置文件和日志配置文件统一到工程外,这就需要项目里引用的路径都是采用绝对路径,因为相对路径引用配置文件只能在工程内)

四:接口服务

因为我做的是一个支付中心,需要对外提供接口,研究了一下spring,几种主流方式(

soap,http,hessian,rmi等)都支持,为了简单起见,采用http,spring对http协议进行了封装(HttpInvokerServiceExporter),可以面向对象进行操作,底层通信交给spring。

五:编译环境

坚持web-inf\lib下不留jar,全部采用user_libray的方式。主要基于以下2个考虑

1、对jar进行分类管理,这样能清楚每一个jar的用途,而不会想以前不管有用没用都向lib里放

2、为以后改成maven项目做基础,因为项目紧迫,暂时没时间研究maven

六:spring

基本采用spring提供的注解用到@service,@autowired

其中遇到一个问题就是servlet和filter中注入问题

因为servet和filter不属于spring容器管理,

不过这个问题spring都考虑到了,例如filer提供DelegatingFilterProxy

另外说一下spring自带的jdbcTemplate不怎么好用,调用存储过程的方法更是让我苦恼不少,最后研究了半天还是采用jdbc的connection.prepareCall方法

而且加载对象得写RowMapper感觉很麻烦,有时间还是想改成hibernate,感觉jdbcTemplate有点四不像,没有jdbc灵活,又没有hibernate那么丰满

相关推荐