2015年7月份毕业工作以来,陆陆续续也做了很多项目,基本上都是SSM框架,即:Spring+SpringMVC+MyBatis,项目是Maven构建,每次接手新的项目或者平时项目出现问题的时候,大致统计了下,主要问题一般都出现在SSM项目的配置文件上面,虽然网上也有各个配置文件的详细介绍,但整体感觉都比较零碎,所以我想系统的介绍下整个SSM配置文件的作用和加载过程.
一,闲话少叙,先看下SSM项目的配置文件框架图如下:
二,配置文件整体上可以分为五大部分
1,conf包下的各种给参数赋值的文件
2,maven的配置文件pom.xml文件
3,spring mvc的web.xml的配置文件
4,spring包下各种配置文件
5,log4j等日志的配置文件
三,各配置文件在项目中的调用关系
项目启动后会首先加载web.xml文件,先解析有关springmvc的有关配置,比如,监听器,过滤器等内容,然后加载spring的配置文件,主要包括bean的注入,定时器的配置等功能,
最后将spring下的配置文件下的bean注入到Java类中进行调用,进而完成整个配置文件的加载.
四,接下来将分别介绍以上5中配置文件的详解
1,pom.xml文件的配置详解,pom文件主要有2个作用:
下载jar包
给各种参数赋值
一个pom文件基本上包含以下部分
4.0.0
iapp-webapp
war
org.mortbay.jetty
maven-jetty-plugin
6.1.26
8090
0
iapp-webapp
org.apache.poi
poi-ooxml
3.8
org.quartz-scheduler
quartz
2.2.1
development
<_db_mysql_driver>com.mysql.jdbc.Driver
<_db_mysql_url>jdbc:mysql://ip:port/domainName?allowMultiQueries=true
<_db_mysql_user>userName
<_db_mysql_pwd>123456
<_db_mysql_maxActive>255
<_db_mysql_maxIdle>10
<_db_mysql_minIdle>2
<_db_mysql_maxWait>15000
<_timeBetweenEvictionRunsMillis>60000
<_minEvictableIdleTimeMillis>180000
<_testWhileIdle>true
<_validationQuery>select 1
<_removeAbandoned>true
<_removeAbandonedTimeout>180
true
production
<_db_mysql_driver>com.mysql.jdbc.Driver
<_db_mysql_url>jdbc:mysql://ip:port/domainName?allowMultiQueries=true
<_db_mysql_user>userName
<_db_mysql_pwd>123456
<_db_mysql_maxActive>127
<_db_mysql_maxIdle>5
<_db_mysql_minIdle>2
<_db_mysql_maxWait>16000
<_timeBetweenEvictionRunsMillis>60000
<_minEvictableIdleTimeMillis>180000
<_testWhileIdle>true
<_validationQuery>select 1
<_removeAbandoned>true
<_removeAbandonedTimeout>180
false
2,conf包下配置文件详解,一般该文件夹下的文件都是properties文件,下面以jdbc.properties进行讲解
#由于一般本地开发环境和线上环境的mysql的配置不相同,所以一般在pom文件中分别配置不同的值,
#在这里只引用pom文件中的值即可,引入pom文件中值的格式是:${pom文件中值}
#mysql数据库驱动,由于该驱动在测试环境下和线上环境的值都一样所以直接赋值
DB_MSSQL_DRIVER=com.mysql.jdbc.Driver
#数据库地址
DB_MSSQL_URL=${_db_mysql_url}
#用户名
DB_MSSQL_USER=${_db_mysql_user}
#密码
DB_MSSQL_PW=${_db_mysql_pwd}
#定义最大连接数,连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制
maxActive=${_db_mysql_maxActive}
#定义最大空闲,最大空闲值,当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,
#一直减少到maxIdle为止,0时无限制
maxIdle=${_db_mysql_maxIdle}
#定义最小空闲,当空闲的连接数少于阈值时,连接池就会预先申请一些连接,以免洪峰来时来不及申请
minIdle=${_db_mysql_minIdle}
#定义最长等待时间(超时等待时间,单位:毫秒)
maxWait=${_db_mysql_maxWait}
#毫秒秒检查一次连接池中空闲的连接
timeBetweenEvictionRunsMillis=${_timeBetweenEvictionRunsMillis}
#连接保持空闲而不被驱逐的最长时间
minEvictableIdleTimeMillis=${_minEvictableIdleTimeMillis}
#在空闲时检查有效性
testWhileIdle=${_testWhileIdle}
#要求必需是个SELECT类型的SQL语句,至少返回一行,由于它会在所有应用的SQL语句执行之前运行一次,
#所以原则上应该对数据库服务器带来的压力越小越好,推荐使用“SELECT 1
validationQuery=${_validationQuery}
#是否开启自动清理
removeAbandoned=${_removeAbandoned}
#自动回收超时时间(以秒数为单位)
removeAbandonedTimeout=${_removeAbandonedTimeout}
context-param(用于加载文件)
listener(加载springmvc的监听器 )
filter(进行url地址请求的过滤器)
servlet(进行servlet配置)
具体内容如下:
syslog
contextConfigLocation
classpath:spring/app-config.xml
org.springframework.web.context.ContextLoaderListener
HiddenHttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter
HiddenHttpMethodFilter
springmvc
EncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
EncodingFilter
/*
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc-servlet.xml
1
springmvc
/
404
/WEB-INF/error/error_404.html
4,app-config.xml文件的详情如下
classpath:conf/important.properties
classpath:conf/jdbc.properties
classpath:conf/web-service.properties
classpath:authen.properties
classpath:conf/spring-velocity.properties
classpath:authen.properties
0.0.1
${demowebapp.homepage}
6,spring-db-config.xml主要用于数据库的连接,事务的管理,mapper文件和dao层文件的加载等,详情如下
classpath:mapper/**/*.xml
8,log4j.xml的配置详情
log4j.xml配置文件只需要放到resouce文件夹下就可以了,系统会自动读取,不需要显性的引入,整体上SSM框架关系不大,网上都可以找到详细的配置讲解,我会在下一篇博客里专门来介绍.
五,以上就是整个内容,欢迎大家讨论,指正!