Spring升级至Springboot的要点

前段时间因为公司大力推行架构升级,往微服务架构靠拢,笔者陆陆续续大概花了2个月时间把一个Spring项目改造成了Spring Boot架构。下面是这次改造中的总结及我所遇到的坑。

注:我们采用的是流行的SSM架构

第一步:清理pom.xml

①pom文件继承或者在dependencyManage添加对spring-boot-starter-parent的依赖,目的是为了统一管理spring及第三方组件的的version。

②添加spring-boot-starter-web和spring-boot-starter-aop这两个必备依赖,然后删除掉原有对spring、spring mvc、aspectjweaver相关的依赖。(注意:前期需要调研springboot版本与spring、mybatis、freemarker/thymleaf版本的对应关系,这里我们拿mybatis为例讲解,spring中依赖的是)而springboot中我为了用上springboot的自动配置,依赖的是,而这个mybatis starter所依赖的是mybatis-spring:1.3.1的版本,它与mybatis-spring相差的版本并不是很大,使得我的mybatis能正常运转不报错。之所以用mybatis starter:1.3.0版本是我经过几次尝试获得的成果,选用更高版本的时候,mybatis对mapper.xml文件内对resultType的类型要求会更严格,比如我们定义这样个resultMap然后在查询语句中而dao文件中方法定义如下是可以的,但是高版本的mybatis类型校验比较严格,这样写是会报错的。

③SB默认是用logback作为日志实现组件的,如果想要用log4j2或其他日志框架,需要在spring-boot-starter-web和spring-boot-start-actuator排除掉spring-boot-start-logging,然后引入spring-boot-starter-log4j2这样的依赖。

第二步:干掉web.xml(tomcat层)

web.xml里配置的组件都是tomcat层面的东西,包括servlet(用于接收处理http请求)、fillter(在http请求抵达servlet前做一些拦截操作、及http请求完成后做数据回收)、Listener(对tomcat的生命周期进行监听,Spring就是在tomcat启动完成后,由tomcat回调ContextLoaderListener的contextInitialize方法来触发Spring容器的初始化),关于Filter组件的注解化可参考这个文章https://blog.csdn.net/u010675669/article/details/91846236,另外两个组件都是类似的,如果只有一个servlet组件且requestMapping是“/”的话,可以不需要配置,Springboot自动配置完成。

第三步:干掉spring-mvc.xml(Spring MVC层)

一般我们会将spring-mvc.xml用于配置mvc层面的bean,与applicationContext.xml区分开。在Springboot 2.0+版本我们通过添加这样一个配置类来完成对spring mvc配件的定制化,注意如果加上了@EnableWebMvc注解,会让Springboot所有对于springmvc的自动配置都失效,意味着我们需要像spring那样自定义包括ViewResolver、View、序列化等配件,个人不建议加这个注解。

改这一层的时候主要有两个处理点:

①静态文件:将原本位于spring的webapp目录下的静态资源文件迁移至startic目录,并在WebMvcConfig中添加对静态资源文件的路径映射

②前端页面(.html,.ftl,.jsp等):无论项目是否前后端分离,前端项目均要把静态资源文件的uri在前面加上/static。

注:这里有个坑我讲一下,我改造的项目是没有前后端分离的,页面用的是模板引擎freemarker,首先需要将webapp/WEB-INF目录下的页面文件放置到classpath:/templates目录下,依赖spring-boot-starter-freemarker后,通过<#include />引入其他ftl文件时,没办法像以前那样通过相对路径的办法引入,只能以根目录/开头。这是一个很坑的地方,只能搜索所有以<#include开头且后面跟得"/"的文本,进行逐个修改。

第四 步:干掉applicationContext.xml(Spring层)

主要涉及DataSource、Mybatis、Redis等组件的配置,建议给每个组件都创建个配置类。

1.DataSource配置类,如果只有一个数据源的话,直接在application加入如下内容就可以直接注入DataSource了。

然后配置好mybatis跟事务管理器。

2.redis配置类

总结:按照以上步骤一步步来,我们就可以成功将spring架构升级到spingboot了,离微服务非常近了。有任何的疑问或者建议,欢迎大家在下方留言交流。

发布了4 篇原创文章 · 获赞 0 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u012190454/article/details/104571615