Java – Spring – SSM整合配置

简介

主要对Spring,SpringMVC和Mybatis三个系统进行配置和整合。

 

配置Maven依赖

以下是Maven 的 SSM基本依赖配置。

<?xml version="1.0" encoding="UTF-8"?>
<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>cn.unsoft</groupId>
    <artifactId>SSMIntegrate</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--    设置打包类型,如果是普通包则是jar,如果是webapp网页应用程序的话就选择war包,因为war包在Tomcat上会自动解压-->
    <packaging>war</packaging>

    <!--    定义编译JDK版本-->
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <!--    定义Spring版本号,因为导入的Spring包比较多,为了统一包的版本号,定义了一个统一的属性-->
        <spring.version>5.3.24</spring.version>
    </properties>


    <dependencies>
        <!-- Spring上下文依赖包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Spring Bean 的依赖包 用于管理Bean 类的 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- SpringMVC 相关依赖包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- SpringMVC 相关依赖包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Spring JDBC 依赖包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Spring AOP切面编程依赖包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Spring 整合 JUnit 依赖包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Mybatis核心 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>

        <!-- Mybatis和Spring的整合包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.1.0</version>
        </dependency>

        <!-- 数据库数据源连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.15</version>
        </dependency>

        <!-- junit 测试依赖包 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- MySQL驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>

        <!-- log4j日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- 分页功能插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.3.2</version>
        </dependency>

        <!-- 日志 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.4.5</version>
        </dependency>

        <!-- Servlet API -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- JSON自动化解析依赖包 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.1</version>
        </dependency>

        <!-- 文件上传依赖包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>

        <!-- Spring5和Thymeleaf整合包 -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.13.RELEASE</version>
        </dependency>

    </dependencies>

</project>

 

配置SpringMVC.xml

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


    <!--    注解 Bean 扫描-->
    <context:component-scan base-package="cn.unsoft"></context:component-scan>

    <!-- 配置Thymeleaf视图解析器 -->
    <bean id="viewResolver"
          class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/templates/"/>
                        <!-- 视图后缀 -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

    <!-- 开启MVC注解驱动 -->
    <mvc:annotation-driven/>

    <!-- 对于ThymeleafViewResolver无法被处理的静态请求,使用默认Tomcat处理 -->
    <mvc:default-servlet-handler/>

    <!-- 视图控制器,不需要控制器方法处理的页面,可以直接配置访问 -->
    <mvc:view-controller path="/" view-name="index"></mvc:view-controller>

    <!-- 上传文件需要引入的Bean -->
    <!--  参阅:https://www.tzming.com/posts/1047  -->
    <!-- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>-->


    <!-- 请求控制器方法拦截器,用于对控制器方法的执行前后置处理 -->
    <!--  参阅:https://www.tzming.com/posts/1048  -->
    <!--    <mvc:interceptors>-->
    <!--        <mvc:interceptor>-->
    <!--            <mvc:mapping path="/url"></mvc:mapping>-->
    <!--            <ref bean="firstInterceptor" />-->
    <!--            <bean class="firstInterceptor" />-->
    <!--        </mvc:interceptor>-->
    <!--    </mvc:interceptors>-->

    <!-- 请求异常处理器,用于对控制器方法在执行过程中出现异常时的处理方法 -->
    <!--  参阅:https://www.tzming.com/posts/1050  -->
    <!--    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">-->
    <!--        <property name="exceptionMappings">-->
    <!--            <props>-->
    <!--                &lt;!&ndash;-->
    <!--                properties的键表示处理器方法执行过程中出现的异常-->
    <!--                properties的值表示若出现指定异常时,设置一个新的视图名称,跳转到指定页面-->
    <!--                &ndash;&gt;-->
    <!--                <prop key="java.lang.ArithmeticException">error</prop>-->
    <!--            </props>-->
    <!--        </property>-->
    <!--        &lt;!&ndash;-->
    <!--        exceptionAttribute属性设置一个属性名,将出现的异常信息在请求域中进行共享-->
    <!--        &ndash;&gt;-->
    <!--        <property name="exceptionAttribute" value="ex"></property>-->
    <!--    </bean>-->
</beans>

 

配置Spring.xml

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

    <!-- 导入jdbc.properties文件,包含数据库连接信息 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 使用 Druid 进行数据源管理,导入 jdbc.properties 文件里的参数值 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

</beans>

 

Spring 整合 Mybatis

在SSM项目中,Mybatis是交由Spring进行管理的,由 mybatis-spring 依赖提供了 Spring 整合 Mybatis 的 Bean 类 SqlSessionFactoryBean.

 

创建 Mybatis 核心配置

<?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>

    <!--    外部配置properties文件-->
    <!--    <properties resource=""></properties>-->

    <!--    Mapper包别名-->
    <!--    <typeAliases>-->
    <!--        <package name=""></package>-->
    <!--    </typeAliases>-->


    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///jdbc?serverTimezone=UTC"/>
                <property name="username" value=""/>
                <property name="password" value=""/>
            </dataSource>
        </environment>

        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///jdbc?serverTimezone=UTC"/>
                <property name="username" value=""/>
                <property name="password" value=""/>
            </dataSource>
        </environment>

        <environment id="production">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///jdbc?serverTimezone=UTC"/>
                <property name="username" value=""/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>


    <mappers>
        <package name=""/>
    </mappers>
</configuration>

 

配置在Mybatis配置文件中

我们知道,如果要把Mybatis交由Spring IOC管理,则Mybatis对象的创建将在Spring.xml中配置。

通过Spring.xml中配置 Mybatis 的 Bean 实现 Mybatis 整合到 Spring IOC 中,设置 configLocation 属性指定 Mybatis 核心配置文件位置

【Spring.xml】

    <!-- 把Mybatis整合到 Spring 中 -->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:Mybatis-config.xml"></property>
    </bean>

 

配置在Spring配置文件中

除了可以单独把Mybatis配置项在Mybatis配置文件中配置外。

SqlSessionFactoryBean 还提供了在Mybatis配置文件中所具有的配置项,因此我们可以选择把部分Mybatis配置放在Spring中进行配置,那么Mybatis配置文件中就可以不再配置。

    <!-- 把Mybatis整合到 Spring 中 -->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:Mybatis-config.xml"></property>
        <!-- 通过引用DataSource数据源配Mybatis的数据源 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 配置所以的实体类别名 -->
        <property name="typeAliasesPackage" value="cn.unsoft.pojo"></property>
    </bean>

通过在Spring中配置部分Mybatis配置项后,Mybatis核心配置文件中的相应配置可以忽略。

当然如果这种配置方式比较容易混乱,可以不配置在Spring IOC 中

 

Mapper接口IOC管理

Mybatis 中的SqlSession需要通过获取Mapper接口的class,获取到Mapper接口的抽象方法,当SqlSession被IOC管理之后,Mapper接口随之也需要交由IOC进行管理。

Spring-Mybatis 提供了一种非常方便的类MapperScannerConfigurer。

它可以通过扫描的方式,把所有的Mapper接口接管并交给IOC自动管理。

Spring.xml

    <!--
        配置mapper接口的扫描配置
        由mybatis-spring提供,可以将指定包下所有的mapper接口创建动态代理
        并将这些动态代理作为IOC容器的bean管理
    -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.unsoft.mapper"></property>
    </bean>

 

配置log4j曰志

 

配置事务管理器

配置数据库处理的事务管理,并把事务管理交给Spring IOC 中。

Spring.xml
    <!--    
        配置数据库事务管理器
        并开启注解驱动,开启事务注解驱动后,就可以在实现类中使用注解的方式进行事务管理
        https:// www.tzming.com/posts/1025
    -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager"/>

Service 实现类中,就可以通过【@Transactional】对数据操作加入事务管理功能。

 

配置分页插件

mybatis-config.xml

    <plugins>
        <!--设置分页插件-->
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

关于分页插件的使用,可以参考下面文章

简介 分页功能是一个非常繁锁的问题,需要判断首页,尾页,所在页的前后两页的页码,实现起来非常麻烦,M……
2023-01-03

 

SSM整合项目打包下载

提供一分基本整合完成的SSM基础项目打包,提供日后如有不懂时研究,或当作项目环境搭建模板使用。

SSM整合配置项目包

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Java – Spring – SSM整合配置
简介 主要对Spring,SpringMVC和Mybatis三个系统进行配置和整合。   配置Maven依赖 以下是Maven 的 SSM基本依赖配置。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns……
<<上一篇
下一篇>>