IDEA 框架迁移:由SSM至SpringBoot过程详解
提示:本篇文章整理出框架迁移的大致流程,此外还记录了在实际中遇到一些的问题及解决措施,时间有限不能详尽,如有纰漏还请大佬指出,谢谢!
框架迁移记录
一、SpringBoot理论知识与基本框架搭建
本人在项目中是使用的是1.5.8.RELEASE版本。
- 理论知识的话最好还是得有,记得以前是看的B站某尚xx机构的,之后准备新开一个SpringBoot2.X的学习专题;
- 框架搭建的话,就不赘述了(其实很简单的),我在这里贴一篇其他博主的:https://blog.csdn.net/sunnyzyq/article/details/108666480
- 框架搭建好后,可以自己写一个controller来测试一下:
-
注意
:在完成框架搭建后,可能在启动类运行时会出现:
异常:Cannot determine embedded database driver class for database type NONE…(应该是这个)
原因:SpringBoot 刚启动时就会自动地注入数据源(开始没有)和配置 jpa等等。
解决:在启动类中加入以下代码即可:
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
![]()
二、正式开始迁移框架
接下来基本就是框架迁移的顺序了(每次先迁移一个成功了再去迁移其他的)以及回忆一些我遇到的坑。
1. SSM框架下pom.xml的迁移
1.1 在原SSM框架中的pom.xml中,将和spring相关的依赖先去除(springboot已经有了);
1.2 接下来就可以将其他依赖粘贴到SpringBoot的pom.xml中去了(当然可能出现其他“意外”)其实几句和spring-boot-相关的配置就已经涵盖了很多jar包依赖。
2. DAO的迁移
这里由于我之前在SSM的版本中添加了一些
其他特殊配置
,在迁移的时候出现了很多bug(折腾了很久),感觉是因为SpringBoot封装的太多太多东西了,所以我建议大家如果有特殊的需求建议先删除,让
项目“单纯一些”
,等迁移结束再添加。
2.1 将之前的数据库相关配置如数据库驱动、连接等写入application.properties,还有mybatis相关的、日志相关的都直接迁移到对应的位置即可;
2.2 因为SpringBoot就是为了去掉.xml,将配置代码化,其本质都是将其写入往SpringIOC容器当中,按照SpringMVC里面的配置一一对应创建bean,这里写几个这里常用的注解:
@Configuration
@MapperScan("") //扫描包路径
@Bean(name = "") //相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理;
@EnableAutoConfiguration//让SpringBoot根据应用声明的依赖来对Spring框架进行自动配置,加在主类上;
@AutoWired
@Value("")
.......
2.3 如果之前有硬编码的地方应该都放到application.properties里面;
2.4 接下来就直接把其他资源迁移过去,之后进行单元测试,确保DAO的迁移没有问题;
2.5
注意
:静态是不能以加@Value这种方式加载application.properties中的配置的,要为静态变量设置上setter并去掉static;
2.6
注意
:在在配置url时,可以在后面加上
&useSSL=false
这个防止数据库报错,因为MySQL在高版本需要指明是否进行SSL连接。
2.7
注意
:还遇到过数据库报错误提示:… incompatible with sql_mode=only_full_group_by的问题时候,最简单的一种解决办法是在MySQL的console中执行以下语句即可:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
3. Service的迁移
3.1 首先也是在原SSM框架中的pom.xml中,将与之相关的先去除,如之前需要扫描使用注解类型的配置(启动类是自动全包扫描的);
3.2 使用事务管理时:
![]()
3.3 接下来如果使用了Redis的话可以先把Redis的配置写入配置文件,同样按照SSM框架中的.xml文件去写对应代码;
3.4 之后先测试一个功能成功之后就可以转移整个Service了以及一些不写入数据库的东西。
4. WEB层的迁移
4.1 和前面几乎一样,定义静态资源配置、视图解析器、请求处理器、创建相关bean等,写完配置类之后就可以迁移web相关资源了,然后做前后端联调;
4.2
注意
:RequestMapping(value=”/xx”),其中是value不是name;
4.3
注意
:加载资源的路径
![]()
4.4
注意
:遇到某些不正常显示的,可以考虑降低一下jackson的版本;
![]()
4.5 控制台输出连接池的警告信息时(虽然不影响),可以修改连接池初始线程数;
![]()
4.6
注意
:遇到Could not autowire. No beans of ‘xxxx’ type found的错误提示时,虽然不影响运行但还改一下Autowire的检测级别吧;
![]()
4.7
注意
:有时候遇到资源加载不出来的时候,考虑清除浏览器缓存试试,或者检查一下本地或者服务器上的资源加载路径;
4.8 最后就可以慢慢迁移其他的如拦截器等,至此基本完成了框架迁移的大致流程。
三、总结
以上只是本人总结的迁移框架大致流程(虽然很简单但也记录一下吧),涉及到很多具体细节还有坑,由于时间原因不能详尽。如有错误或不妥之处还请大佬们不吝赐教!