一个项目的SpringCloud微服务改造过程

作者:CQITer小编 时间:2019-08-07 01:58

字号

SSO是公司一个已经存在了若干年的项目,后端采用SpringMVC、MyBatis,数据库使用MySQL,前端展示使用Freemark。今年,我们对该项目进行了一次革命性的改进,将其改造成SpringCloud架构,并且把前后端分离,前端采用Vue框架。

一、使用SpringCloud架构进行改造

1.1 为什么使用SpringCloud 

SpringCloud的核心是SpringBoot,相比较于传统的Spring,SpringCloud具有以下优点:

部署简单,SpringBoot内置了Tomcat容器,可以将程序直接编译成一个jar,通过java-jar来运行。

编码简单,SpringBoot只需要在pom文件中添加一个starter-web依赖,即可帮助开发者快速启动一个web容器,非常方便。

配置简单,SpringBoot可以通过简单的注解方式来代替原先Spring非常复杂的xml方式。如果我想把一个普通的类交给Spring管理,只需要添加@Configuration和@Bean两个注解即可。

监控简单,我们可以引入spring-boot-start-actuator依赖,直接使用REST方式来获取进程的运行期性能参数,从而达到监控的目的。

1.2 一个常规项目都需要改造哪些部分

1.2.1 配置文件  

SSO项目改造前充斥着大量的配置文件,主要包含以下这些部分:

静态资源相关

数据

mybatis配置

redis配置

事务

拦截器拦截内容

监听器、过滤器

组件扫描路径配置

本文着重介绍以下几个部分:

1)静态资源处理

SpringMVC中,如果mvc:interceptors配置的URL规则如下,则不会拦截静态资源。

<mvc:mapping path="/*.do" /> 

但是如果配置的是:

<mvc:mapping path="/**" />

方案1: 在web.xml中配置<servlet-name>default</servlet-name>,用defaultServlet先处理请求如:

<servlet-mapping> 

        <servlet-name>default</servlet-name> 

        <url-pattern>*.jpg</url-pattern> 

    </servlet-mapping> 

    <servlet-mapping> 

        <servlet-name>default</servlet-name> 

        <url-pattern>*.png</url-pattern> 

    </servlet-mapping> 

    <servlet-mapping> 

        <servlet-name>default</servlet-name> 

        <url-pattern>*.gif</url-pattern> 

    </servlet-mapping> 

    <servlet-mapping> 

        <servlet-name>default</servlet-name> 

        <url-pattern>*.ico</url-pattern> 

    </servlet-mapping> 

    <servlet-mapping> 

        <servlet-name>default</servlet-name> 

        <url-pattern>*.gif</url-pattern> 

    </servlet-mapping> 

    <servlet-mapping> 

        <servlet-name>default</servlet-name> 

        <url-pattern>*.js</url-pattern> 

    </servlet-mapping> 

    <servlet-mapping> 

        <servlet-name>default</servlet-name> 

        <url-pattern>*.css</url-pattern> 

    </servlet-mapping> 

方案2使用<mvc:resources />标签声明静态资源路径

<mvc:resources mapping="/resources/js/**" location="/js/" /> 

<mvc:resources mapping="/resources/images/**" location="/images/" /> 

<mvc:resources mapping="/resources/css/**" location="/css/" /> 

方案3:使用mvc:default-servlet-handler/标签

SpringBoot解决方案:继承WebMvcConfigurerAdapter实现addResourceHandlers方法。

public void addResourceHandlers(ResourceHandlerRegistry registry) { 

    registry.addResourceHandler("/**"

    .addResourceLocations("classpath:/resource/")//sso静态资源 

    .addResourceLocations("classpath:/META-INF/resources/")//swagger静态资源 

    .setCachePeriod(0);//0表示不缓存 

}

sso静态资源文件路径如图:

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>微服务 架构 数据
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接