对于SSM框架的介绍,项目结构的层级分离网上有很多介绍的资料,其实对于SSM框架的整合也有很多的教程,但我还是决定写下来,作为对自己的检查。在整合工程中,数据库使用的是mysql,数据库连接池使用的是HikariCP(HikariCP官网通过对比声称它是目前速度最快的数据库连接池),同时也配置了redis数据库连接池和redis客户端。
SSM整合,我分成了两个配置文件,分别为spring-mvc.xml和applicationContext.xml。同时还有资源文件,jdbc.properties、log4j.properties和redis.properties,另外需要注意的是,jackson导入的包和配置文件在spring3.x和spring4.x下是不一样的。完整目录如下:
pom.xml,引入常有的Java包
4.0.0
cn.scene
cn.scene
war
1.0-SNAPSHOT
cn.scene Maven Webapp
http://maven.apache.org
4.3.13.RELEASE
3.4.5
1.7.7
1.2.17
junit
junit
4.12
provided
org.springframework
spring-test
${spring.version}
provided
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-oxm
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-aop
${spring.version}
aspectj
aspectjweaver
1.5.4
aspectj
aspectjrt
1.5.4
javax
javaee-api
7.0
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.3.1
mysql
mysql-connector-java
5.1.34
com.zaxxer
HikariCP
2.7.4
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
log4j
log4j
${log4j.version}
jstl
jstl
1.2
com.fasterxml.jackson.core
jackson-core
2.8.1
com.fasterxml.jackson.core
jackson-databind
2.8.1
com.fasterxml.jackson.core
jackson-annotations
2.8.1
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
commons-codec
commons-codec
1.10
redis.clients
jedis
2.9.0
cn.scene
applicationContext.xml,整合Spring,Mybatis和Redis
主要实现自动扫描,自动注入和配置数据库,数据库连接池选用Hikari,理解时可参考代码中的注释。
Spring公共配置
classpath:jdbc.properties
classpath:redis.properties
dialect = mysql
reasonable = true
jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/dbName?useUnicode=true&characterEncoding=utf-8
username=root
password=123456
readOnly=false
connectionTimeout=30000
idleTimeout=6000000
maxLifetime=2850000
maximumPoolSize=15
log4j.properties
为了方便调试,一般都会使用日志来输出信息,Log4j是Apache的一个开放源代码项目,Log4j的配置很简单,而且也是通用的,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;
#定义LOG输出级别
log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
redis.properties
该文件主要存放redis数据库中的key值,可以通过@Value()注入key值。
#缓存官网首页内容的key
HOME_INDEX=HOME_INDEX
到这里,便实现了Spring和Mybatis的整合。spring-mvc.xml是整合Spring-mvc的配置文件。主要是自动扫描控制器,视图模式和注解的启动,这里要注意的一点是Controller基础包要改成项目对应目录下的报名,jsp的目录也可自行修改到自己想要的目录。这里我把jsp页面放在了webapp根目录下。具体代码如下:
spring-mvc.xml
text/html;charset=UTF-8
接着配置web.xml文件,主要实现对spring-mybatis.xml和spring-mvc的引入,以及添加编码过滤器实现SSM的整合。具体代码如下:
web.xml
Scene Application
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
mvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
mvc
*.html
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*
index.html
index.jsp
至此,便是完成了SSM的整合,具体代码已托管github:SSM框架整合