Tres series principales de SSM: Spring 5 + Spring MVC 5 + integración MyBatis 3.5 (con código fuente)

citar

Antes de terminar la nueva versión de los tres principales marcos SSM, este artículo trata sobre su proceso de integración y el código fuente del proyecto, los números de versión son: Spring 5.2.2.RELEASE, SpringMVC 5.2.2.RELEASE, MyBatis 3.5.2.

Introducción de antecedentes

ssm-demo es el primer proyecto de código abierto que publiqué en GitHub. El proyecto debería desarrollarse a finales de 2016, y luego elegí abrir este proyecto a la plataforma de código abierto GitHub.

ssm-demo

Era un fenómeno relativamente común usar la versión Spring 4.X al desarrollar proyectos web Java en ese momento en 2016, y no hace que la gente sienta que la versión está detrás, pero ya es 2020, por lo que Spring se llevó a cabo sobre la base del código original. Actualizaciones relevantes del framework, así que organicé la integración de los tres principales tutoriales del framework SSM relacionados con esta versión de Spring 5.

La primavera 5 ya está aquí

Spring 5 es una actualización de versión muy importante. También puede ver que esta versión se actualiza con frecuencia en su almacén de código abierto. Todos deberían creer que esta versión tomará gradualmente una participación cada vez mayor en el desarrollo empresarial.

Hable brevemente sobre el número de versión seleccionado en este tutorial:

  1. La versión Spring eligió una versión relativamente nueva, que se actualizó de 4.2.4.RELEASE original a 5.2.2.RELEASE. Esta versión se lanzó oficialmente el 3 de octubre de 2019, y el registro de actualización de la versión fue v5.2.2.RELEASE .

  2. La versión de Spring MVC también se actualiza con la versión de Spring, que también es 5.2.2.RELEASE.

  3. La versión de MyBatis se actualiza a 3.5.2, MyBatis 3.5 y superior corresponde a Spring 5 y superior, Spring 4 no es compatible con MyBatis 3.5 y superior, la versión correspondiente de mybatis-spring también necesita actualizarse a la versión 2.0 y superior, elegí 2.0.1.

Lo anterior es la selección de la versión de los tres marcos principales de SSM. El número de versión es seleccionado e integrado por mí mismo. Puede ajustarlo, pero debe prestar atención a la prueba y no informar errores.

Integración de código principal

La estructura del directorio del código fuente es la siguiente:

dependencia de pom

Se han introducido los números de versión principales de los tres marcos principales de Spring Spring MVC MyBatis, aquí les doy directamente el archivo pom.xml:

<?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>com.ssm.demo</groupId>
    <artifactId>ssm-demo</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>ssm-demo</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring.version>5.2.2.RELEASE</spring.version>
        <java.version>1.8</java.version>
        <jdbc.driver.version>8.0.16</jdbc.driver.version>
        <aspectj.version>1.9.5</aspectj.version>
        <javax.servlet-api.version>3.1.0</javax.servlet-api.version>
        <jsp-api.version>2.2</jsp-api.version>
        <jstl.version>1.2</jstl.version>
        <mybatis.version>3.5.2</mybatis.version>
        <mybatis-spring.version>2.0.1</mybatis-spring.version>
        <maven.test.skip>true</maven.test.skip>
    </properties>

    <dependencies>
        <!-- Begin: spring依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- End: spring依赖 -->

        <!-- Begin: springmvc依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- End: springmvc依赖 -->

        <!-- Begin: mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis-spring.version}</version>
        </dependency>
        <!-- End: mybatis依赖 -->

        <!-- Begin: 数据库依赖包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${jdbc.driver.version}</version>
            <scope>runtime</scope>
        </dependency>
        <!-- End: 数据库依赖包 -->

        <!-- Begin: aspectj相关jar包-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <!-- End: aspectj相关jar包-->

        <!-- Begin: Servlet相关依赖包 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${javax.servlet-api.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>${jsp-api.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <!-- End: Servlet相关依赖包 -->
    </dependencies>

    <build>
        <finalName>ssm-demo</finalName>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

        </plugins>
    </build>
</project>
复制代码

Solo espera pacientemente a que se descargue el paquete jar.

Archivo de configuración de Spring

El archivo de configuración applicationContext.xml es el siguiente:

  • Activar escaneo de paquetes
  • Configurar la fuente de datos
  • Configuración MyBatis
  • Configuración de gestión de transacciones
  • Configuración de aspecto de transacción
<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        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/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

    <!-- 自动扫描 -->
    <context:component-scan base-package="com.ssm.demo.dao"/>
    <context:component-scan base-package="com.ssm.demo.service"/>

    <!-- 配置数据源 -->
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url"
                  value="jdbc:mysql://localhost:3306/ssm-demo"/>
        <!-- 改为你的地址即可 -->
        <property name="username" value="root"/>
        <property name="password" value="131313"/>
    </bean>


    <!-- 配置mybatis的sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 自动扫描mappers.xml文件 -->
        <!--<property name="mapperLocations" value="classpath:mappers/*.xml"></property>-->
        <!-- mybatis配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ssm.demo.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 配置事务通知属性 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <!-- 定义事务传播属性 -->
        <tx:attributes>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="upd*" propagation="REQUIRED"/>
            <tx:method name="edit*" propagation="REQUIRED"/>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="new*" propagation="REQUIRED"/>
            <tx:method name="set*" propagation="REQUIRED"/>
            <tx:method name="remove*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="del*" propagation="REQUIRED"/>
            <tx:method name="change*" propagation="REQUIRED"/>
            <tx:method name="check*" propagation="REQUIRED"/>
            <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="search*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="load*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED" read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <!-- 配置事务切面 -->
    <aop:config>
        <aop:pointcut id="serviceOperation"
                      expression="(execution(* com.ssm.demo.service.*.*(..)))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/>
    </aop:config>

</beans>
复制代码

Configuración SpringMVC

El archivo spring-mvc.xml es el siguiente:

<?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-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!-- 使用注解的包,包括子集 -->
    <context:component-scan base-package="com.ssm.demo.controller"/>

    <!-- 视图解析器 -->
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>
复制代码

Habilite el escaneo del paquete del controlador y vea la configuración del analizador.

Configuración MyBatis

El archivo de configuración de mybatis-config.xml es el siguiente:

<?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>
    <typeAliases>
        <package name="com.ssm.demo.entity"/>
    </typeAliases>
</configuration>
复制代码

configuración de web.xml

Finalmente, el archivo de configuración más importante en el proyecto web Java: web.xml. Aquí cargaremos la configuración relevante de Spring e iniciaremos el contenedor Spring. Al mismo tiempo, configuraremos SpringMVC y entregaremos todas las solicitudes al controlador frontal DispatcherServlet para su procesamiento.

El archivo de configuración web.xml es el siguiente:

<?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_2_5.xsd"
         id="WebApp_ID" version="2.5">
    <display-name>ssm-demo</display-name>
    
    <!--Start 欢迎页-->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <!--End 欢迎页-->

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!--Start 编码过滤器 解决乱码问题-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--End 编码过滤器 解决乱码问题-->

    <!--Start spring监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!--End Start spring监听器 -->

    <!--Start spring mvc servlet-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--End spring mvc servlet-->

    <!--Start servlet-mapping -->
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <!--End servlet-mapping -->

</web-app>
复制代码

Página JSP

Finalmente, hay una página JSP para realizar pruebas. Cree un nuevo index.jsp en el directorio webapp. El código es el siguiente:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>ssm demo</title>
</head>
<body>

Hello SSM ( Spring 5.2 + MyBatis 3.5)!

</body>
</html>
复制代码

Lanzamiento y vista previa del proyecto.

He probado el código fuente. Después de implementarlo en Tomcat e iniciarlo, puede ver la siguiente página:

¡La integración de los tres marcos principales de SSM de Spring 5 es exitosa!

Este es un tutorial de integración para Spring 5 + Spring MVC 5 + MyBatis 3.5. Es solo para integración. Es para que todos lo consulten al actualizar Spring 5. Otras funciones pueden implementarse por sí mismas. También se puede ampliar con el proyecto de código abierto que escribí antes.

Asuntos que requieren atención

  • Solicitar sufijo

Lo que se establece aquí es interceptar la solicitud al final de .do, puede modificarla según sus necesidades.

  • Archivo mapeador

Como no hay ningún archivo Mapper agregado al proyecto, comenté esta línea de configuración. Después de agregar el archivo Mapper, debe eliminar esta línea de comentarios.

Descarga del código fuente

El enlace de descarga es el siguiente:

download.csdn.net/download/ZH…

Durante la carga, configuré que no necesito descargar puntos. Si necesito descargar puntos más tarde, la plataforma CSDN debería configurarlo.

Escribe al final

Como una pequeña promoción, los amigos interesados ​​pueden echar un vistazo. Recientemente, publiqué un pequeño folleto "Tutorial práctico del proyecto Spring Mall en línea a gran escala en línea" en la plataforma Nuggets (haga clic en el enlace o haga clic en la imagen a continuación para comprar para obtener un descuento 8 Doblar ):

my-xiaoce

El folleto se centrará en la pila de tecnología Spring Boot, y otros marcos técnicos utilizados también tendrán en cuenta las últimas tendencias tecnológicas, ampliarán el conocimiento, de superficial a profundo, paso a paso, mientras aprenden las bases, también pueden dominar ciertas habilidades de desarrollo, no solo aprender Spring Boot's Fur también es consciente de su diseño de código fuente y principios internos. No solo aprende la integración de las pilas de tecnología relacionadas de Spring Boot, sino que también puede usar la pila de tecnología Spring Boot para construir un gran sistema de centro comercial, para que tenga un progreso de aprendizaje de alta calidad. Nivel de experiencia. Al mantenerse alejado del proyecto Hello World, no solo puede obtener un proyecto práctico completo, sino también ayudarlo a llenar la pila actual de tecnología Hot Spring Boot, brindando protección suficiente para su profundidad técnica y promoción salarial.

Este es un proyecto práctico de un centro comercial. Algunas vistas previas de página son las siguientes:

  • Inicio

    index-1

  • Lista de pedidos

    Mis ordenes

Los amigos interesados ​​pueden prestar atención.

Excepto por indicar la reimpresión / fuente, todos los autores son originales y bienvenidos a la reimpresión, pero esta declaración debe conservarse sin el consentimiento del autor, y el enlace del texto original se encuentra en una posición obvia en la página del artículo, de lo contrario, el derecho a ejercer la responsabilidad legal está reservado.

Gracias por mirar. Tengo trece. El artículo fue publicado por primera vez en mi cuenta pública "La pequeña historia de un programador".

Supongo que te gusta

Origin juejin.im/post/5e5a722c6fb9a07ccb7e9a32
Recomendado
Clasificación