【半小时快速上手】Maven项目配置SSM框架思路和遇到的坑

目录

 

前言

思路

一.运行环境

二.选取jar包

pom文件贴上 

  三.配置web项目

1. 先从spring配置开始

2. mybatis配置

3. mvc-servlet配置


前言

由于框架配置的范围比较广,每个人都会有不同的需求,本文首先界定一下范围,仅限于spring 整合 mvc 以及 mybatis,将最基本的功能搭建好

思路

第一次是连同jar包版本也是自己选取,遇到的问题不少,查阅了很多资源并从中得到帮助,要配置一个基础框架,逻辑顺序是

  1. 配置好运行环境
  2. 选取依赖jar包,并采用POM来管理
  3. 各种配置,这个环节再细分讲解

一.运行环境

首先环境采用  jdk1.8 + mysql 5.7 + tomcat9 + maven3 安装配置网上很多,这里不再赘述

二.选取jar包

第一次选取jar包,只要掌握主体需要哪些依赖即可,至于版本,可以参考maven中央仓库

  核心是mvc  / mybatis  和 spring 相关包 全家桶进行整合,

  然后是数据库驱动、连接池、json序列化插件/jackson或fastJson二选一、servlet api(脱离容器注入)

  再辅助给上一些工具类jar包,如apache工具全家桶

  最后是一些插件 ,包括分页 、generator实体生成工具、测试单元

首先spring 该用哪些 jar包 本人之前博客已经做了说明 

https://mp.csdn.net/postedit/83995217

总的来说spring需要的模块  核心 ——>AOP——>事务——>ORM——>测试

spring aop 说明下  ,aspectjweaver 这个包,是spring aop的依赖包 , 引用时需要注意版本,比如4.3.12,maven仓库推荐使用aspectjweaver 1.8.9的jar包  , 而且由于切面要织入到代码底层,所以和jdk版本也有关 ,如果这个包版本过低,有可能导致基于Annotation的aop切面报错

mybatis需要的模块  mybatis ——>mybatis-spring

mvc需要的  web——>webmvc ,mvc是依赖于web的

连接池这里采用阿里的druid,不多介绍 配置根据文档来

mysql驱动  , 主要是根据你的mysql版本来

jackson采用jackson 2.xx  尽量用稳定度高下载人数多的版本 

插件方面主要是分页 ,根据mybatis的版本决定   

这里直接把pom文件贴上 

<?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>develepe</groupId>
  <artifactId>lazyKitten</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <!--<name>lazyKitten Maven Webapp</name>-->
  <!--&lt;!&ndash; FIXME change it to the project's website &ndash;&gt;-->
  <!--<url>http://www.example.com</url>-->

  <properties>

    <!-- main framework setting -->
    <spring.version>4.3.12.RELEASE</spring.version>
    <mybatis.version>3.4.1</mybatis.version>
    <mybatis-spring.version>1.3.1</mybatis-spring.version>

    <!-- tools version setting -->
    <commons-lang3.version>3.3.2</commons-lang3.version>
    <commons-io.version>2.4</commons-io.version>
    <commons-codec.version>1.9</commons-codec.version>
    <commons-fileupload.version>1.3.1</commons-fileupload.version>
    <commons-beanutils.version>1.9.1</commons-beanutils.version>
    <jackson.version>2.7.4</jackson.version>

    <!-- jdbc driver setting -->
    <mysql.driver.version>5.1.36</mysql.driver.version>
    <!--connect pool-->
    <druid.version>1.0.11</druid.version>
    <!-- environment setting -->
    <jdk.version>1.8</jdk.version>

  </properties>

  <dependencies>
    <!-- spring begin -->

    <!--spring core-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
      <exclusions>
        <!--<exclusion>-->
          <!--<groupId>commons-logging</groupId>-->
          <!--<artifactId>commons-logging</artifactId>-->
        <!--</exclusion>-->
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- spring aop -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.9</version>
    </dependency>
    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>3.2.5</version>
    </dependency>

    <!--spring transaction-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- spring orm -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-oxm</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--spring test-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>provided</scope>
    </dependency>

    <!-- spring end -->

    <!-- MyBatis begin -->
    <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>
    <!-- MyBatis end -->

    <!-- connection pool -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>

      <version>${druid.version}</version>
    </dependency>

    <!-- jdbc driver -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.driver.version}</version>
      <scope>runtime</scope>
    </dependency>

      <!--spring web mvc-->
      <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 end-->

    <!-- tools begin -->
    <!--apache group-->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>${commons-lang3.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>${commons-io.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>${commons-codec.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>${commons-fileupload.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>${commons-beanutils.version}</version>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!--jackson group-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.module</groupId>
      <artifactId>jackson-module-jaxb-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>

    <!--slf4j 包含完整dependency-->
    <!--<dependency>-->
      <!--<groupId>ch.qos.logback</groupId>-->
      <!--<artifactId>logback-classic</artifactId>-->
      <!--<version>1.2.3</version>-->
    <!--</dependency>-->

    <!--pageHelper-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.0.1</version>
    </dependency>
    <dependency>
      <groupId>com.github.jsqlparser</groupId>
      <artifactId>jsqlparser</artifactId>
      <version>0.9.5</version>
    </dependency>

    <!-- mybatis generator -->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.2</version>
    </dependency>

    <!-- tools end -->

    <!-- servlet api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <!--java test-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>lazyKitten</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>

        <plugin>
          <!--Mybatis-generator插件,用于自动生成Mapper和POJO-->
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-maven-plugin</artifactId>
          <version>1.3.2</version>
          <configuration>
            <!--配置文件的位置-->
            <configurationFile>src/main/resources/conf/mybatis/generator-config.xml</configurationFile>
            <verbose>true</verbose>
            <overwrite>true</overwrite>
          </configuration>
          <executions>
            <execution>
              <id>Generate MyBatis Artifacts</id>
              <goals>
                <goal>generate</goal>
              </goals>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-core</artifactId>
              <version>1.3.2</version>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>8</source>
                  <target>8</target>
              </configuration>
          </plugin>
      </plugins>
  </build>
</project>

  三.配置web项目

配置之前回顾一下,整个web项目的工作流程,我们的web项目 首先是放到 web容器上运行 , 在容器启动时,spring监听容器的启动,并且开始托管所有的bean,而后mvc的DispatcherServlet随之启动,监听http请求并做出响应

那么配置思路就很清晰了,

   首先是web.xml  放置spring上下文启动监听器<listenner>,放置dispatcher <servlet>  ,加入字符编码转换<filter>

同样的贴上配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <!--encoding用来设置编码格式,forceEncoding用来设置是否理会 request.getCharacterEncoding()方法,设置为true则强制覆盖之前的编码格式。-->
  <filter>
    <filter-name>characterEncodingFilter</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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

<!-- 跨源处理,无需求可不用理会-->
  <filter>
    <filter-name>cors</filter-name>
    <filter-class>com.xx.xx.common.filter.CorsFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>cors</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--handler PUT/DELETE 请求 , 不需要接收w-xxx-form-urlencoded参数可无需理会 -->
  <filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>



  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--部署applicationContext的xml文件-->
  <!--默认的路径是"/WEB-INF/applicationContext.xml-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:conf/spring/applicationContext.xml</param-value>
  </context-param>

  <!--DispatcherServlet是一个Servlet,可以配置多个DispatcherServlet-->
  <servlet>
    <servlet-name>DispatcherServlet</servlet-name><!--在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--指明了配置文件的文件名,不使用默认配置文件名,而使用dispatcher-servlet.xml配置文件。-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <!--默认值:/WEB-INF/<servlet-name>-servlet.xml-->
      <param-value>classpath:conf/spring/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup><!--是启动顺序,让这个Servlet随Servlet容器一起启动。-->
  </servlet>
  <servlet-mapping>
    <!--servlet Name-->
    <servlet-name>DispatcherServlet</servlet-name>
    <!--实现restful-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

容器已经配置了让spring加载上下文,dispatcher负责处理所有请求,那么接下来就是配置 spring配置,以及mvc的配置,项目中会要访问数据库,那么DAO连接层也相应的需要配置好

1. 先从spring配置开始

spring的配置主要从三个方面考虑 ,第一是 加载扫描Bean组建  ,第二是配置数据源,包括session和连接池 , 第三是配置事务

扫描bean的思路是分层扫描  , spring每个配置文件扫描到的bean都会运用到当前properties里的配置

(监听器加载a.properties 这里做全局配置,b.properties里扫描某个包下的bean配置事务,c.properties里扫描的某包下的bean不配置事务)

这里不做过多的分层拆分,spring 扫描管理项目java包下所有stereotype注解标注的注解的组件(比如@Component @Service @Controller @Repository等)  以及 所有配置mybatis的xml路径 与 扫描路径(xml定义好类的路径,扫描后会一起加入spring的容器管理,无需手动加入@MybatisDao注解),Controller排除掉,放到servlet的配置里去扫描

下面直接贴出spring配置

<?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"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <description>Spring Configuration</description>

    <!-- 加载配置属性文件 -->
    <context:property-placeholder ignore-unresolvable="true" location="classpath:conf/application.properties" />

    <!-- base-package 如果多个,用“,”分隔 -->
    <context:component-scan base-package="com.xx.xx">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- dataSource -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
        <property name="driverClassName" value="${jdbc.driver}" />
        <!-- 基本属性 url、user、password -->
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="${jdbc.pool.init}" />
        <property name="minIdle" value="${jdbc.pool.minIdle}" />
        <property name="maxActive" value="${jdbc.pool.maxActive}" />

        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000" />

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />

        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />

        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />


        <!-- 配置监控统计拦截的filters -->
        <property name="filters" value="stat" />
    </bean>

    <!-- MyBatis begin -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <!--page plugins-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <!--使用下面的方式配置参数,一行配置一个 -->
                        <value>
                            helperDialect=mysql
                        </value>
                    </property>
                </bean>
            </array>
        </property>
        <property name="dataSource" ref="dataSource"/>
     
        <property name="mapperLocations" value="classpath:/mapper/**/*.xml"/>
        <!--load mybatisConfig-->
        <property name="configLocation" value="classpath:/conf/mybatis/mybatis-config.xml"></property>
    </bean>

    <!-- 扫描basePackage下所有以@MyBatisDao注解的接口 -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <property name="basePackage" value="com.xx.xx"/>
    </bean>

    <!-- 数据源注入事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>


    <!-- 配置 Annotation 驱动,扫描@Transactional注解的类定义事务  声明式事务  -->
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
    <!-- MyBatis end -->



</beans>

运用到了properties,做配置管理,避免修改时重复编译,贴上连接池的配置也可自行定义

jdbc.pool.init=3
jdbc.pool.minIdle=3
jdbc.pool.maxActive=300

2. 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>

    <!-- 全局参数 -->
    <settings>
        <!-- 使全局的映射器启用或禁用缓存。 -->
        <setting name="cacheEnabled" value="true"/>

        <!--空值调用set方法,放置mybatis返回map时,一些key的value为空时,key本身也为空-->
        <setting name="callSettersOnNulls" value="true"/>

        <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
        <setting name="aggressiveLazyLoading" value="true"/>
        <!-- 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true -->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
        <setting name="useColumnLabel" value="true"/>
        <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false  -->
        <setting name="useGeneratedKeys" value="false"/>
        <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不映射 PARTIAL:部分  FULL:全部  -->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <!-- 这是默认的执行类型  (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新)  -->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!-- 使用驼峰命名法转换字段。 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- 设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
        <setting name="localCacheScope" value="SESSION"/>
        <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
        <setting name="jdbcTypeForNull" value="NULL"/>
    </settings>

</configuration>

3. mvc-servlet配置

  遇到两个问题,

 1.不开启下段配置,无法接收form-data类型的参数

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

2.jackson 2.x的配置不生效 

贴上配置

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

    <description>Spring MVC Configuration</description>
    <!--开启mvc注解支持-->
    <mvc:annotation-driven  />

    <!-- 加载配置属性文件 -->
    <context:property-placeholder ignore-unresolvable="true" location="classpath:conf/pathConf.properties" />

    <!-- base-package 如果多个,用“,”分隔 -->
    <context:component-scan base-package="com.weisi.lazykitten" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <!--handler globalException-->
        <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    </context:component-scan>


    <!--通过处理器映射DefaultAnnotationHandlerMapping来开启支持@Controller注解-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
    <!--通过处理器适配器AnnotationMethodHandlerAdapter来开启支持@RequestMapping注解-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <!-- 设置返回字符串编码 -->
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name = "supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
                <!-- json转换器 -->
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </list>
        </property>
    </bean>

    <!-- 文件上传 可以处理multipart/form-data的表单数据以及文件-->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置上传文件的最大尺寸为5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
    </bean>

</beans>

至此配置文件全部完成,剩下的搭建目录,生成实体,就可以了,之后玩web项目的其他功能,框架都会使用这一套,或另外部署一套spring boot。

猜你喜欢

转载自blog.csdn.net/u012309392/article/details/84972428