改造出发点,是基于现在服务都在向上云的目标前进,传统SpringMVC难以满足项目持续构建、服务节点任意扩展的需求,所以开始了历史项目的改造。
项目改造考虑的主要是兼容以前的业务代码,以及session管控和之前的组件使用。
历史项目采用的是SpingMVC、Tomcat、多数据源、Shiro权限、Redis、Log4j
搭建SpringBoot框架
改造前先搭建一个SpringBoot框架,为了更好的复用老项目,新框架集成日志框架Log4j2,Shiro权限管控(没有采用Spring推荐的spring security,主要是为了复用),session由redis管控,除上述主要组件外,可以同时集成Swagger2、kafka、actuator等
后台改造
框架搭建完后,把原有业务代码拷过来,这个时候不要急于把原有maven管理jar包的配置文件拷贝过来,而是要在新框架上编译,报什么错,添加什么jar包,这样可以尽可能的少走弯路。
开始适配
1.解决项目缺少jar包引起的报错,然后尽可能复用老项目的配置,谨记缺什么补什么。
2.解决数据源的问题,把需要扫描的数据层配置好,应该就可以了,这个时候可以验证接口是否已经正常。
3.解决Shiro权限,SpringMVC采用的是xml配置,SpringBoot尽可能去除xml配置,因此把xml配置转换成springboot适应的配置
前台改造以及打包
后台解决完后,就是前台的页面,老项目采用的是jsp,而Spring官方是不支持JSP页面的,所以maven打包的时候,需要特殊处理,把src/main/webapp下面的jsp,打包指向到到META-INF/resources,这样打包到jar包后就会包含jsp。
![9c57e5c60bfbd89ffa580c46b8ece22c.png](https://i-blog.csdnimg.cn/blog_migrate/68b1698e7e8f1b8d126b1879afdddb79.jpeg)
上面打包有一个需要特别注意的因素,虽然jsp打包进去,但是可能会出现访问报错404,很大一部分原因是因为>spring-boot-maven-plugin版本的原因,这个目前只有1.4.2.RELEASE版本才可以
![1dc09f13620da5af23e3a7590f360a03.png](https://i-blog.csdnimg.cn/blog_migrate/a127ba4f0fad5582d3a5df05506ea453.jpeg)
前后台都没有报错后,简单验证权限、上传文件、日志文件、定时任务等是否正常,如果没有问题,改造基本完成。
注意事项
改造过程中比较关键的拦截器注解
@Aspect
使用拦截器如果获取不到session,需要在配置中增加FilterRegistrationBean
![7b58e7fc6353a6d981593018c53ec659.png](https://i-blog.csdnimg.cn/blog_migrate/96599ab58986ac3e31cb94fb56a84246.jpeg)
集群
框架改造完后,其实距离到集群,还是需要一定的改造,需要解决以下问题
1.分布式日志的统一管理
2.文件系统管理
3.定时任务防止重复执行
上面这些问题也都有成熟的解决方案,日志可以用kafka异步处理,也可以采用ELK采集处理;文件系统更是有很多MongoDB对象存储、fastdfs等;定时任务可以搭建单独的系统,也可以加redis锁
大家感兴趣可以关注,一一解锁新场景的新组件。