公司目前上线的两个项目都是比较老的,java版本是jdk1.6,mvc框架使用的是strus2。

随着不久前struts2官方公布新的安全漏洞,我们也不得不做出相应的整改措施,除了之前博文中所说把struts2改为spring mvc外,还把其中部分项目的struts2改成了spring boot,由于各种原因,领导安排由我给出相应的整改方案,然后其他同事参考。

Spring boot中内嵌tomcat服务器,不需要再专门对tomcat软件进行维护,同时遵循“约定优于配置”,如果整个项目都改成spring boot的话,将会少很多配置文件,不过我们只是改struts2涉及的地方,相对而言改动实际并不是很大。

要给出可行方案,自然需要实际操作成功整合,以下是整个整改过程:

一、使用maven创建springboot项目,spring boot版本选择为1.4.3,自动依赖的spring版本是4.3.5,选择了web启动依赖。

需要说明的是,我这里创建项目时使用了eclipse中的spring tools插件,目前能创建的最低版本是1.4.7,然后默认导入的spring相关的jar包是4.3.9。

但是应上边领导要求,目前不能升级jdk,导致4.3.9的spring在启动项目时抛出jdk版本不兼容的异常,于是手动把spring boot的版本改为了1.4.3,默认导入的spring版本降为了4.3.5。

这种方式创建项目后,maven的pom.xml文件主要的几个内容如下:

org.springframework.boot

spring-boot-starter-parent

1.4.3.RELEASE

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

二、增加jdk1.6和tomcat7相关配置

Spring boot项目默认使用的是jdk1.7和tomcat8.5,官方也建议使用1.7以上的jdk,但由于我们暂时不能升级,因此只能使用jdk1.6,这就需要更改默认的配置,把jdk改为支持1.6,把tomcat改为tomcat7,根据spring boot的官方说明,需要在pom.xml文件中加入一些配置:

首先是properties中加入如下配置

1.6

7.0.59

8.1.15.v20140411

2.2.0.v201112011158

其次是dependences中加入如下配置

org.apache.tomcat

tomcat-juli

${tomcat.version}

org.springframework.boot

spring-boot-starter-jetty

org.eclipse.jetty.websocket

*

三、克隆项目代码和配置

使用struts2,或者说常规的web项目都有web.xml文件,而spring boot不需要web.xml文件,因此拷贝的时候,web.xml就可以略过。

其他部分,不论是具体代码还是配置文件,都按原来的层级结构原封不动的拷过来,以期尽可能小的改动,改动越小,出错几率越低。

四、根据编译报错的地方补全jar包

原本的项目没有使用maven,所依赖的jar包都是放在lib文件夹下,也就是全部手动导入,而spring boot项目本身就使用了maven创建,因此所有依赖包也都已maven配置的方式导入。

在初始spring boot项目下考入之前整个项目代码,自然就会缺少相关的jar包从而编译出错,此时首要任务便是根据eclipse工具中醒目的错误提示依次补全相关依赖包。

五、改造struts2的action为spring的controller

原本提供给外部的控制层是继承了struts2的actionsupport类,然后再在struts2的配置文件中配置url,改为spring boot方式后,web控制器这部分实际上就是spring mvc,因此需要把原本的action改为spring mvc的方式,也就是加上spring mvc控制器相关的注解,如@Controller和@RequestMapping。

与此同时,struts2相关的jar包和xml配置文件自然也都不在需要了。

六、添加配置文件加载类

原本启动项目时tomcat需要加载web.xml文件,同时在web.xml中配置了spring初始文件的加载,spring boot项目中没有了web.xml,也不再依赖外部tomcat,因此需要采用其他措施在启动时加载spring初始文件,也就是使用spring boot的文件加载类

package com;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.ImportResource;

@Configuration

@ImportResource(value = "classpath:config1/applicationContext.xml")

public class MyConfig {

}

这里有一个需要注意的细节是:spring boot默认只扫描spring boot启动类同包以及启动类所在包的子包下的内容,因此如果想要不手动配置扫描路径的话,就需要把这个类放在启动类所在包或子包下。

如果没有放在启动类所在包或子包下,就需要在启动类上加入@ComponentScan注解指定需要扫描的包。

七、解决运行时的异常

上边已经借助eclipse的提示解决了编译错误,再配置好相应的启动配置文件后,就可以启动项目,根据启动过程抛出的异常再做具体的处理,例如spring装配bean的过程中找不到对应的类。

当解决完启动的一些异常之后,项目看起来便像是成功改造了,但实际上只是看起来而已,我们还需要浏览器访问配置的url,看运行时是否还有异常,例如具体的类中注入某个对象时发现相应的bean不存在。

经过这样七个步骤之后,我们的struts2改spring boot的任务便算是大功告成了。只不过,这里只是改struts2模块而已,所以原本的配置文件依然都还存在,如果后期需要把整个项目都改成spring boot方式,或许那些xml文件就都将不复存在了。

strtus2改成springboot_jdk1.6环境下struts2改spring boot方案-阿里云开发者社区相关推荐

  1. strtus2改成springboot_jdk1.6环境下struts2改spring boot方案

    公司目前上线的两个项目都是比较老的,java版本是jdk1.6,mvc框架使用的是strus2. 随着不久前struts2官方公布新的安全漏洞,我们也不得不做出相应的整改措施,除了之前博文中所说把st ...

  2. mysql的程序怎么升级成mysqli_如何将mysql更改为mysqli?-问答-阿里云开发者社区-阿里云...

    首先要做的可能是将每个mysql_函数调用都替换为等效函数mysqli_,至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于MySQL API的代码,这将是更简单的方法是一种程序性的. 为了 ...

  3. extjs给panel添加滚动条_extjs.treePanel在ie9下滚动条的显示问题-阿里云开发者社区...

    新接手的项目前端用的是extjs.在ie9下有一个treepanel的下拉滚动条死活出不来.后来把树的定义改成了这样:var multiSelectTree = new Ext.tree.TreePa ...

  4. mysql linux改user_linux mysql误修改user表导致无法root用户登录,求大神帮助。-问答-阿里云开发者社区-阿里云...

    linux mysql误修改user表导致无法root用户登录,急救!!! mysql> select user,host,password from user; user host passw ...

  5. 阿里 postgresql mysql_如何将PostgreSQL与MySQL相结合,实现1+12的组合拳?(下)-阿里云开发者社区...

    查看上篇文章,点击这里. (4)无死角全加密 前面讲了一下我们有一个无死角全加密的一个版本,是一个特殊的版本.这个版本也是跟跟达摩院合作输出的一个版本.它能够防网络攻击,数据库攻击,操作系统攻击,存储 ...

  6. linux环境下nacos的安装+启动,阿里云服务器安装nacos

    nacos安装+启动(linux环境): 基础:安装java环境 官网下载压缩包:如 nacos-server-1.2.1.tar.gz 放在自定义目录下 # 解压 tar -xvf nacos-se ...

  7. 阿里云服务器搭建python web环境_《Python入门》Linux 下 Python Web开发环境搭建笔记-阿里云开发者社区...

    之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,根据个 ...

  8. linux下centos安装mysql数据库_Linux CentOS 下的MySQL数据库安装与配置-阿里云开发者社区...

    安装mysql yum -y install mysql yum -y install mysql-server yum -y install php-mysql yum -y install mys ...

  9. 万网mysql中文乱码_Linux下MySQL出现乱码的解决方法-阿里云开发者社区

    开发环境 cent os 6.5 mysql springboot duird 故障描述 本地开发环境没有任何问题,上传到服务器后发现提交的表单内容只要是中文直接变成 ??? 解决方式 错误尝试: 一 ...

最新文章

  1. html调用asp边疆,[求助]怎么实现ASP在HTML中调用
  2. oracle 实现基于函数的索引
  3. 华为系统鸿蒙假的,鸿蒙系统只是噱头?华为董事长:不是噱头,必要时也能用于手机 - 区块网...
  4. Matlab去掉矩阵中的全0行或列
  5. mysql分页总页数算法解析_详解MySQL的limit用法和分页查询语句的性能分析
  6. python集合操作班级干部竞选演讲稿_【热门】竞选班干部演讲稿集合8篇
  7. android 标签分页,Android之ActivityGroup实现Tab分页标签
  8. 爬虫:requests BeautifulSoup 实战案例
  9. 自定义view绘制太极图案
  10. java算法编程题:某年某月某日是这一年的第几天
  11. gmail注册方法_“ Gmail脱机”应用正在关闭,这是使用的替代方法
  12. 最新智商测试html5,2017年最新智商测试题
  13. 关于 css的一些 基本应用 可供回忆
  14. 数据挖掘与机器学习——数据挖掘概述
  15. stm32 关于GPIO寄存器操作
  16. wifi的sta + ap模式
  17. sql注入绕过姿势--骚姿势大全
  18. Postman(七): postman应用实战
  19. Java项目:眼镜商城系统(java+SSM+JSP+jQuery+Mysql)
  20. 好用的数据备份与恢复软件推荐

热门文章

  1. spring 托管bean_在非托管对象中使用Spring托管Bean
  2. access 按日期分列_excel的分列功能居然这么强大,赶紧收藏起来
  3. 华为旗舰陆续升级鸿蒙系统,华为鸿蒙重磅来袭:今年4月起 华为旗舰手机将陆续升级鸿蒙系统!...
  4. php值传递和java_Java的值传递和引用传递
  5. for oracle中pivot_Python数据处理小技巧:pivot_table后如何拍平columns
  6. 累计占比_全国ETC用户累计突破1亿!广东占比超过1/10
  7. 计算机应用基础模拟试题一,计算机应用基础模拟试题1
  8. 都2020 了,最流行的密码居然依旧是...
  9. 每日一皮:资深老鸟看实习生写代码...
  10. C语言指出下列程序的错误,2012年计算机二级C语言精编教程第二章(8)