最近经理说,要把项目搭成Spring Boot + Spring Cloud + Docker,恩~,我看出来这是在给我自己研究技术的机会(然后抱着马上就要成为后台大神的幻想开始YY,咳,快醒醒,那个啥已经亡啦,抓紧时间撸代码=。=)。于是就开始了一个小小白的BCD(Spring Boot,Spring Cloud,Docker,简称BCD,哈哈哈)之旅。
首先申明,该篇文章会与个人研究进度有关,并保证不断更新文章直到整个框架整合完整,本人尽量同步进行整理与更新。将搭建中的各种尝试与问题尽可能全的进行梳理。对于读者自己尝试搭建可能遇到的问题,由于本人没有遇到所以可能无法作答,请见谅。如文中有理解错误或理解不到位的地方欢迎指出。
搭建环境
IntelliJ IDEA
jdk1.8
MacBook Pro(i7,16G,512G,哈哈哈我就是来装逼的)
创建项目
第一步应该傻子都会吧。
然后选择Spring Initializr,选好jdk路径,如果配置过的话应该是自动会有的,然后点Next。
Type中可以选Maven和Gradle,因为之前的项目是用Maven,所以这里就选了Maven;Language可以选Java,Kotlin,Groovy;Packaging可以选Jar和War。(其实我超想选Gradle和Kotlin,毕竟Android是我老本行=。=),然后点Next。
Spring Boot选了2.0.0 M4,然后选择Web模块里面的Web(可以看到是集成了Tomcat和Spring MVC,不得不感叹IDEA真是太强大了),对,就只选这一个就可以把Spring Boot搭起来了,再点Next。
这边可以修改项目名称,也就是Project name,其他可以不用动,点Finish,等待编译完成,项目就创建成功了。
创建成功之后,项目结构就会像这样。application.properties是整个项目的配置文件。resources顾名思义是放一些资源文件的,其中static文件夹是放js,css,img等静态资源文件而templates文件夹是放html或者其他的一些模板文件的,这具体得看你使用什么模板进行前端的开发。BcdApplication是IDEA自动帮你创建的,如下图。
Controller
项目搭起来以后,首先写一个controller,如下图。
在templates文件夹下面新建一个html文件。
创建一个controller的文件夹,添加一个BcdController,添加映射到bcd.html,启动项目。在浏览器输入localhost:8080/bcd回车,见证奇迹的时刻。
额。。。等等,让我想想,赶紧百度了Spring Boot配置JSP,嗯,然后说不推荐JSP让我用thymeleaf。在pom.xml中加上thymeleaf的依赖。
重启一下项目。
Perfect!!!
然后问题又来了,Q1:如果我要向前端页面传数据呢,之前都是用的JSP,而现在是html。于是又是一通乱百,找到一个解决方法。那就是用HttpServletRequest或者Model或者Map。
这就是thymeleaf的神奇之处,这样就能把数据传到前台了。
然后问题又来了,Q2:如果我想传Java Bean呢,传Object而不是String。这就需要配置Json转换器,让BcdApplication继承WebMvcConfigurerAdapter,然而WebMvcConfigurerAdapter是过时的。
Ta让我们用WebMvcConfigurer代替,因为jdk1.8的接口可以实现默认方法。然后重写里面的configureMessageConverters方法。
接着创建entity文件夹并新建一个Java Bean。
在controller里面添加String-Object的返回值。
然后在html里面这样写。
好了,大功告成!重新运行一下项目就出来了。
其实Spring除了@Controller注解,还有一个@RestController
这个注解是专门用来写Rest API的,返回的直接就是转成Json的数据。
更新整理目标
Spring Cloud
MyBatis
Log
Quartz
Oauth2
ActiveMQ