SpringMVC转SpringBoot步骤+心得

2023-05-16

前言

半路出家写的java,SpringMVC的原理还不是很通,但是项目需要,需要将项目往SpringCloud服务治理方向走,SpringCloud是基于SpringBoot搭建的,所以要先将SpringMVC的项目先转成SpringBoot

其实SpringBoot和SpringMVC没什么区别,只是SpringBoot是官方推出的简化了Spring项目的过多的繁琐的配置而生的,所以项目转化的核心主要是改配置,将之前Spring的项目的jdbc,mybatis,redis等配置转化成SpringBoot的方式配置,其他的业务逻代码完全是兼容的,直接拷贝过来就可以用了

步骤一: 搭建一个最基础的SpringBoot项目

步骤二: SpringBoot集成数据Mybatis(设计jdbc,duri等)

# 数据库访问配置
spring.datasource.db.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.db.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.db.url=jdbc:mysql://xxxxx.com/wallet_supper?useUnicode=true&characterEncoding=utf8&autoReconnect=true
spring.datasource.db.username=linpeng
spring.datasource.db.password=xxxxx
# 下面为连接池的补充设置,应用到上面所有数据源中
spring.datasource.db.initialSize=25
spring.datasource.db.minIdle=5
spring.datasource.db.maxActive=100
# 配置获取连接等待超时的时间
spring.datasource.db.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.db.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.db.minEvictableIdleTimeMillis=300000
spring.datasource.db.validationQuery=SELECT 1 FROM DUAL
spring.datasource.db.testWhileIdle=true
spring.datasource.db.testOnBorrow=false
spring.datasource.db.testOnReturn=false
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.db.filters=stat,wall,log4j
spring.datasource.db.logSlowSql=true

#################mybatis基础配置#################
mybatis.mapper-locations=classpath*:com/jiuzhm/mybatis/**/*.xml
mybatis.type-aliases-package=com.jiuzhm.mybatis.entity
mybatis.config-location=classpath:mybatis-config.xml

步骤三: SpringBoot集成数据Redis

#################redis基础配置#################
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.pass=
spring.redis.pre=kettle_
spring.redis.maxIdle=300
spring.redis.maxActive=600
spring.redis.maxWait=1000
spring.redis.testOnBorrow=true

参考文章:SpringBoot - IDEA搭建Spring Boot整合mybatis(XMl与注解版)详解入门 - XMl扫描不到的吭


-------以上的步骤集成 让项目跑起来难度不大------

步骤四: 把之前项目全部拷贝过来,把之前项目里面的pom依赖包拷贝过来,注意要把Spring相关的依赖包删掉,redis,mybatis也删掉 因为 步骤一,二,三已经集成了相关的依赖了,然后开始一步一步的调试 

这里是主要的工作量

注意:

自动配置的问题

pom.xml - properties里面
<spring.version>3.2.2.RELEASE</spring.version>

<jedis.version>2.1.0</jedis.version><mybatis.version>3.2.8</mybatis.version>

<mybatis-spring.version>1.2.2</mybatis-spring.version><jedis.version>2.1.0</jedis.version>

等等...


要注释掉 约定大于配置 内部占用了这个词 还有默认加载进去 就会报错


Redis

1.RedisServcer 类要加@Service 会告诉Spring要他来扫描管理
2.RedisServcer 注释掉构造器redisTemplate类 springboot约定大于配置 内部已经占用 redisTemplate 不能再构造这个方法 否则会启动报错

3.RedisServcer 的redisTemplate属性要用@Resource 不能用@Autuwired    springboot约定大于配置 内部已经占用 redisTemplate 可以百度一下


mybatis
吭!xml文件和mapper绑定有问题!
网上看了很多资料最后发现是intellij idea的问题,在eclipse中把mapper的xml文件放到src代码目录下是可以一起打包进classes的,而在新版intellij idea中是不会一起打包,就会导致找不到xml报错。

首先确保xml中的namespace配置是你的接口全类名,而不是包名!



解决方法



由于idea默认是不打包src中的xml文件,所以在eclipse中你可以把xml放到src中没有问题,但是在idea中,你把mapper的xml文件放到resources资源中就可以正常访问!然后配置文件里面要加上
# MyBatis 配置
mybatis.mapper-locations=classpath:mybatis/*.xml  mybatis是resource下面的一个目录

mybatis.type-aliases-package=com.jiuzhm.mybatis.entity

更多解决办法可以查看我之前一篇文章

SpringBoot - IDEA搭建Spring Boot整合mybatis(XMl与注解版)详解入门 - XMl扫描不到的吭



Jsp支持+拦截器+全局异常类配置

关键注解:@Configuration  @Bean

import com.jiuzhm.Exception.ExceptionHandle;
import com.jiuzhm.interceptor.TokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

/***
 * Spring Boot 拦截器配置
 */
@Configuration   //标注此文件为一个配置项,spring boot才会扫描到该配置。该注解类似于之前使用xml进行配置
public class ApiInterceptor extends WebMvcConfigurationSupport {

   @Autowired
    TokenInterceptor tokenInterceptor;//否则TokenInterceptor内部无法使用注入 Autowired
    /**
     * 配置拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(this.tokenInterceptor).addPathPatterns("/*/**");  //对来自/user/** 这个链接来的请求进行拦截
    }
    /**
     * jsp路径映射
     * @param
     */
    @Bean
    public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/jsp/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        return  viewResolver;
    }

    @Bean
    public CommonsMultipartResolver multipartResolver(){
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        return  multipartResolver;
    }

    @Bean
    public ExceptionHandle exceptionResolver(){
        ExceptionHandle exceptionResolver = new ExceptionHandle();
        return exceptionResolver;
    }
    /**
     * 静态资源配置
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/frozenui/**").addResourceLocations("classpath:/frozenui/");
        registry.addResourceHandler("/web/**").addResourceLocations("/");
        super.addResourceHandlers(registry);
    }
}
查看原来项目application.xml里面有配置了那些 bean  我们就把这些bean按照上面的@Bean的方式给转换过来就可以了



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringMVC转SpringBoot步骤+心得 的相关文章

随机推荐