o2o项目-12. 框架迁移ssm->springboot

流程:

总的来讲,迁移哪一层就看哪一层的spring配置文件,就是将spring-***.xml文件中的bean作为类,需要的东西作为成员变量注入进去。

被注入的bean一定要有方法带上@Bean标签,其中set上响应的属性

1. pom依赖迁移 

将pom包迁移到新的项目中,将spring相关、junit相关、mybatis相关的省略,其余的直接粘贴过来 

2. dao层迁移

主从库貌似springboot不是很支持;

将mybatis、logback以及图片直接复制过来;

创建config.dao的package,迁移其中的datasource、sessionFactory,将其中的变量写在application文件中,以@Value的方式读取;

迁移dao、bean和mapper;

复制一个test用于测试迁移是否成功,注意,因为没有了xml文件,所以test也不必再继承baseTest,但是要加上两个标签:

@RunWith(SpringRunner.class)
@SpringBootTest

然后迁移所有的其他dao测试类;

3. service层迁移

创建config.service的package,完成其中的transactionManager的配置;

service层用到了redis,所以首先转移redis.properties中的配置到application文件,然后将cache包下的文件直接复制过来;

迁移dto、service、enums、exceptions、Util;

做ut测试,两个,分别测试事务和缓存redis;

4. web层迁移

创建config.web的package,完成其中相关解析器的配置;

复制web包;

5. 前端页面迁移

将webapp复制过来;

验证码的迁移。之前kaptcha是在web.xml中配置的,但是在springboot项目中并没有出现web.xml,所以要以代码的形式配置。在application.propertirs中将kaptcha属性设置好,直接在代码中读取;

docbase图片地址,之前是在servlet.xml中添加docbase设置静态资源的绝对路径。现在由于springboot是内置tomcat,所以要写代码实现。在mvcConfiguration中的addResourceHandlers中配置。但是图片显示还是有问题!!!

6. 拦截器迁移

还是在mvcConfiguration中添加一个addInterceptors方法,

遇到的问题:

1. 在最开始创建spring boot项目的时候,显示 cannot download ‘https://start.spring.io’:start.spring.io 错误

解决方法:最开始用的是学校portal网,切换成mobile即可

2. 在启动springboot之后,报错intellij idea springboot mybatis 配置文件找不到Failed to configure a DataSource:.....

解决方法:https://www.cnblogs.com/AFan-z/p/11220384.html

这里我们采用了在Application.java中

@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})

3. 在启动之后,在地址框中输入url报异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.

解决方法:将@RequestMapping中的name属性改成value

4. 测试dao是否迁移成功(IAreaTest)时报错Error creating bean with name 'sqlSessionFactory' 

解决方法:查看报错信息,发现是因为出现了jdbc.properties文件找不到而报错的。删除该语句。

5. 测试service迁移结果时,发现jedisPool为空,一直报空指针异常,找不到org.apache.commons.pool2.impl.GenericObjectPoolConfig

解决方法:应该是maven依赖的问题。。。。莫名其妙就好了

6. 在测试web层迁移的结果时,启动springboot后出现了404错误

解决方法:...也是过一会就好了,不能用@RestController注释,一定要用@Controller+@RequestMapping

7. servlet相当于是个bean

重难点:

1. @RestController标签:

结合了@responseBody和@Controller两个标签,表示该类下的所有方法返回的东西会以json形式返回。

2. @Configuration标签:

其实所有的标签都是用来往容器里面写配置。该标签就是表明写进ioc容器里

3. @MapperScan标签:

对应之前ssm配置中的mybatis.spring.mapperScannerConfigurer,即配置mybatis的扫描路径

4. 在sqlsessionFactory中的变量存在静态的变量,静态变量不能直接从application properties中获取,要写setter,将@Value标签打在setter上,并将setter的static去掉

5. 在service层的迁移中,不用定义扫描全部的类,因为启动类中只要有@SpringBootApplication标签,就会自动做全package的扫描

6. 只有@Configuration文件才能读取到application.properties文件中的配置信息

发布了53 篇原创文章 · 获赞 5 · 访问量 1535

猜你喜欢

转载自blog.csdn.net/zhicheshu4749/article/details/102697175