ssm(spring+springMVC+mybatis)框架的相关配置

一、基本概念

1.1、spring

        Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1.2、springMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.3、mybatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、相关配置

2.1、开发环境搭建

具体请参看:http://blog.csdn.net/zhshulin/article/details/30779873

2.2、maven web项目搭建

具体请参考:http://blog.csdn.net/zhshulin/article/details/37921705

2.3、ssm整合

这次整合分了5个配置文件,分别是application-dao.xml(管理dao层即mapper层),application-service.xml(管理service层),application-transaction.xml(管理servlet层即handler层)。以及springMVC和mybatis的配置文件,此外有2个资源文件:db.propertis和log4j.properties。完整目录结构如下:


这样分的好处在于,每一层对应一个xml文件。这样有利于管理和修改。

2.3.1、pom.xml

maven项目需要引入的各种jar包。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>ssm07</groupId>
  <artifactId>ssm07</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<spring.version>4.3.8.RELEASE</spring.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>com.ibm.icu</groupId>
			<artifactId>icu4j</artifactId>
			<version>3.4.4</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- spring支持orm -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- spring 依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- aspectj 注解依赖 -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.10</version>
		</dependency>


		<!-- mysql驱动包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.8</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.3</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.0</version>
		</dependency>
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.2.1</version>
		</dependency>


		<dependency>
			<groupId>asm</groupId>
			<artifactId>asm</artifactId>
			<version>3.3.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/cglib/cglib -->
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>2.2.2</version>
		</dependency>

		<dependency>
			<groupId>org.apache.bval</groupId>
			<artifactId>bval-jsr303</artifactId>
			<version>0.5</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3</version>
		</dependency>
		<!-- 返回json数据类型转换问题 -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.5.2</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.5.2</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.5.2</version>
		</dependency>
		
		
		 <!--LOG4日志 start  -->
        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-api</artifactId>  
            <version>1.7.7</version>  
        </dependency>  
        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-log4j12</artifactId>  
            <version>1.7.7</version>  
        </dependency>  
        <dependency>  
            <groupId>log4j</groupId>  
            <artifactId>log4j</artifactId>  
            <version>1.2.14</version>  
        </dependency>  
        <!--LOG4日志 end  -->
	</dependencies>


	<!-- 插件列表 -->
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.6</version>
			</plugin>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.12.4</version>
			</plugin>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.1</version>
				<configuration>
					<port>8888</port>
					<path>/${project.artifactId}</path>
					<uriEncoding>UTF-8</uriEncoding>
					<finalName>${project.artifactId}</finalName>
					<server>tomcat7</server>
				</configuration>
			</plugin>
		</plugins>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
			</resource>
		</resources>
	</build>
</project>

jar包的引用时,不建议使用最新版本。最新版本往往会导致不兼容的情况。

2.3.2、application-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:cache="http://www.springframework.org/schema/cache"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-4.0.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
     http://www.springframework.org/schema/cache
     http://www.springframework.org/schema/cache/spring-cache-4.0.xsd">

    <!-- 配置sqlSessionFactory  让spring 创建factory -->
    <bean id="sqlSessionFactory"
          class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--配置mybatis  配置文件所在的位置 ,让sqlSessionFactory  可以加载到这个文件的输入流-->
        <property name="configLocation" value="classpath:mybatis.xml"></property>
        <!--让spring来管理数据源  ,spring就可以帮mybatis管理事务 ,关闭链接 ,回滚-->
        <property name="dataSource" ref="dateSourceBean"></property>
    </bean>

    <!-- 将db.properties导入到当前XML中 -->
    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 配置C3P0的数据源 -->
    <bean id="dateSourceBean"
          class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 指定连接数据库的驱动-->
        <property name="driverClass" value="${driver}"/>
        <!-- 指定连接数据库的URL-->
        <property name="jdbcUrl" value="${url}"/>
        <!-- 指定连接数据库的用户名-->
        <property name="user" value="${name}"/>
        <!-- 指定连接数据库的密码-->
        <property name="password" value="${password}"/>
        <!-- 指定连接池中保留的最大连接数. Default:15-->
        <property name="maxPoolSize" value="${maxPoolSize}"/>
        <!-- 指定连接池中保留的最小连接数-->
        <property name="minPoolSize" value="${minPoolSize}"/>
        <!-- 指定连接池的初始化连接数  取值应在minPoolSize 与 maxPoolSize 之间.Default:3-->
        <property name="initialPoolSize" value="${initialPoolSize}"/>
        <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0-->
        <property name="maxIdleTime" value="${maxIdleTime}"/>
        <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3-->
        <property name="acquireIncrement" value="${acquireIncrement}"/>
        <!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。
        但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->
        <property name="maxStatements" value="${maxStatements}"/>
        <!-- 每60秒检查所有连接池中的空闲连接.Default:0 -->
        <property name="idleConnectionTestPeriod" value="${idleConnectionTestPeriod}"/>
    </bean>

    <!-- 代理开发方式二: MapperScannerConfigurer 批量配置
		bean没有写ID 批量扫描时会根据接口首字母小写批量生成bean-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 配置sqlSessionFactoryBeanName中的 sqlSessionFactory-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 配置mapper接口所在的包 -->
        <property name="basePackage" value="com.rl.mapper"/>
    </bean>
</beans>

2.3.3、application-service.xml

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    <!-- 扫描service层的组件,让spring容器在初始化的时候加载service层代码 扫描的是service的实现类-->
    
    <context:component-scan base-package="com.rl.service.impl"/>
</beans>

2.3.4、application-transaction.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-4.0.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
     http://www.springframework.org/schema/cache
     http://www.springframework.org/schema/cache/spring-cache-4.0.xsd">
	
	<!-- 配置事务管理器 -->
	<bean id="transactionMannager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">	
		<property name="dataSource" ref="dateSourceBean"></property>	
	</bean>
	<!-- 配置通知 -->
	<tx:advice id="txAdvice" transaction-manager="transactionMannager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
        </tx:attributes>
    </tx:advice>
    <!-- 配置aop切入点 -->
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.rl.service.impl.*.*(..))"/>
    </aop:config>
</beans>

2.3.5、springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-4.0.xsd
     http://www.springframework.org/schema/mvc
     http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
	<!-- 使用springMVC的驱动加载代替以上加载 -->
	<mvc:annotation-driven
		conversion-service="conversionService" />
		
	<!-- 让springmvc框架自动向每个handlerMapping中注册拦截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/**"/>
				<bean class="com.rl.interceptor.LoginInterceptor"></bean>
		</mvc:interceptor>
	</mvc:interceptors>

	<!-- 让spring加载所有自定义的转化器 -->
	<bean id="conversionService"
		class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
		<!-- 定义要加载的转换器列表 -->
		<property name="converters">
			<bean class="com.rl.converter.StringToDateConverter"></bean>
		</property>
	</bean>

	<!-- 定义异常处理器 -->
	<bean class="com.rl.exception.MyExceptionResolver"></bean>

	<!-- 文件上传 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设置上传文件的最大尺寸为5MB -->
		<property name="maxUploadSize">
			<value>5242880</value>
		</property>
	</bean>

	<!-- 组件扫描,让spring容器把扫描到的组件加载到容器的JavaBean集合中 -->
	<context:component-scan
		base-package="com.rl.handler" />
</beans>

根据自己写的类和需要进行相应的配置增加。

2.3.6、mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 全局配置 -->
	<settings>
		<!-- 开启缓存 -->
		<setting name="cacheEnabled" value="true"/>
		<!-- 懒加载 -->
		<setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
          <!-- 配置日志 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
	</settings>
	<!-- 扫描别名 -->
	<typeAliases>
		<package name="com.rl.entity"/>
	</typeAliases>
</configuration>

两个资源文件:

2.3.7、db.properties(连接数据库)

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&allowMultiQueries=true
name=root
password=123456
initialPoolSize=10
maxPoolSize=100
minPoolSize=10
maxIdleTime=600
acquireIncrement=5
maxStatements=100
idleConnectionTestPeriod=60

此连接为Mysql数据库,&allowMultiQueries=true开启数据库多行编辑。

2.3.8、log4j.properties(日志)

### 把日志信息输出到控制台 ###
#日志信息将写到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#信息打印到System.out上 
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#//指定输出格式:显示日期和log信息 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c]-[%p]  %m%n
### 把日志信息输出到文件:accp.log ###
#日志信息将写到文件中 
log4j.appender.file=org.apache.log4j.FileAppender
#指定日志输出的文件名 
log4j.appender.file.File=d:/logs/test.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#指定输出格式:显示日期,日志发生位置和日志信息
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}  [%c]-[%p]  %m%n
### 设置优先级别、以及输出源 ###
#设置优先级别为
log4j.rootLogger=debug, stdout, file
#log4j.rootLogger=info, stdout, file

当然上面的配置完成之后,别忘了在webapp文件夹中还得配置一个web.xml文件。以便对各个xml文件统一管理。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
	version="3.1">
	
	 <!--监听tomcat servletContext启动-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!--告诉监听器  需要加载的配置文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
        	classpath:application-dao.xml,
            classpath:application-service.xml,
            classpath:application-transaction.xml
        </param-value>
    </context-param>
	
	<!-- 配置一个前端控制器  servlet -->
	<servlet>
		<!-- servlet的名字 -->
		<servlet-name>springmvc</servlet-name>
		<!-- servlet类所在的全类名 -->
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<!-- 前端控制器初始化的时候需要的参数 -->
			<param-name>contextConfigLocation</param-name>
			<!-- springmvc对应的配置文件 -->
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
	</servlet>
	
	<!-- 配置servlet的访问映射 -->
	<servlet-mapping>
		<!-- servlet的名字 -->
		<servlet-name>springmvc</servlet-name>
		<!-- 访问中央处理器的链接地址是 -->
		<url-pattern>*.action</url-pattern>
	</servlet-mapping>
</web-app>

以上便是ssm框架的基本配置文件,根据自己的项目做相应的修改即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值