Spring Boot / Spring MVC 入门实践 (一) :环境搭建与第一个项目 写得很好,我照这个做就成功了。有几个细节大家可以注意一下:
1.第一次创建Maven Project的时候需要从网上下载不少东西,在我的机器上右下角进度一直停在10%,我一度以为死机了,就点了“停止”,结果折腾了半天。实际上点一下进度图标,能看到具体正在下载的文件和进度,一直是在往前走的。应该是在下载很多小文件。另外,在pom.xml里添加对spring-boot-starter-web和spring-boot-starter-thymeleaf的dependencies时侯,以及下载STS插件时也比较慢。
可能是家里的网络有些问题,有时即使耐心等待,但是下载一次还会出错,我是切换到4G才成功的。第一次下载失败,重新下载的情况如下:
STS: 小文件特别多。按照步骤重新安装即可,上次已经下载的文件不会再下载,所以速度挺快的。事实上,我有个文件用家里的宽带,怎么也下载不下来,切换到4G才下载成功。STS成功下载安装后会提示重启Eclipse.
pom.xml:右键点击project,然后选择Maven->update project,Eclipse就会下载新增dependency所需要的文件。(我碰到的实际问题是一开始把themeleaf的
2. 如果使用Eclipse,需要安装STS(Spring Tool Suite)插件。具体安装方法很简单,百度一下“Eclipse STS"即可。如果没有安装STS,Run As菜单里没有Run As Spring Boot App的选项(一个很炫酷的功能)
3.文章里提到“如果弹出提示选择含有main方法的类,则选择我们刚才新建的Application.class”,它的具体含义是实际上有两个含有main方法的类
(1) 创建Maven Project时的App类,它有一个main方法,在命令行输出“Hello World"就退出了。这不是我们想要的结果。
(2) 按照文章添加的Application类,它的main方法是对于URL为"/"的请求,返回helloWorld.html页面的内容。即使我们想要的结果。
所以碰到提示时,应该选择Application类。
其他:
1. 问题。这个例子里有4个地方和hello World有关
(a) 类名:文件名为HelloWorldController.java,以及文件里的定义 public class HelloWorldController
(b) 方法名:public String helloWorld(){...}
(c) 方法的返回值:return "helloWorld";
(d) 页面HTML文件名:src/main/resources/templates/helloWorld.html
Ada首先figure out了(c)和(d)的关系,详见Ada的SpringBoot | @RequestMapping 注解 。后面我又试了一下,(a)和(b)叫什么都可以,(c)和(d)需要一样。
亲测下面的代码是可以工作的:
HelloWorld.java改名为itIsFun.java:
package com.example.springboot_demo;
import org.springframework.stereotype.Controller;
@Controller
public class itIsFun { //(a) 类名改为itIsFun
@RequestMapping("/")
public String thankYou(){ //(b) 方法名改为thankYou
return "helloAda"; //(c) 方法的返回值改为helloAda
}
}
(d) 页面HTML文件名从helloWorld.html改为helloAda.html
修改代码后,需要stop and relaunch. 我一开始没有想到要stop,就run as,就没有得到正确的结果。
2. 在网上找到一些关于Spring MVC开发的文章,都说需要安装Web Server(如Tomcat)。而Spring Boot本身就内嵌了一个Web Server(喜欢研究技术细节的朋友可以参考:SpringBoot深入(一)--SpringBoot内置web容器及配置),所以就不需要在安装其他Web Server了。所以我前面说Run As Spring Boot App是一个很炫酷的功能。
3. 以前写Hello World 80%的时间是在装环境,现在80%的时间是在下载,所以网速很重要。呵呵。