搭建第一个SpringBoot项目
*************************************************************************************************************************************************
这个网上有很多教程,如:
https://www.cnblogs.com/black-spike/p/8017768.html
1) @RequestMapping(value = "/hello",method = RequestMethod.GET)
这里使用的value = "/hello",而https://www.breakyizhan.com/springboot/3040.html这个地方有点误导:
经验证,"/"只会拦截后缀为"/"的请求,如:http://localhost:8080/
但是并不会拦截请求:http://localhost:8080/hello
如果想要达到拦截所有带有"/"请求的效果,可以使用“/*”达到要求
(PS:"/hello"应该不用说了吧,能且只能拦截http://localhost:8080/hello)
2) 三种启动方式:
① IDEA启动:run
或者:
② mvn启动:mvn spring-boot:run
PS:这个指令的支持是在Maven的POM.xml配置中的:
言归正传,看mvn spring-boot:run
出现这个:
但是看到这个才算真正启动:
② java -jar 启动:
mvn package/install/deploy,打包成jar:
(PS: 这三个指令的区别可自行了解)
看到target目录下生成了两个jar:
其中的origin是打包之前的文件(看大小应该是没加入依赖的源代码包),firstspringboot-0.0.1-SNAPSHOT.jar是打包好的文件。
接下来java -jar firstspringboot-0.0.1-SNAPSHOT.jar:
看到这个真正启动:
键
OK!!!
开启IDEA SpringBoot的热部署:
*************************************************************************************************************************************************① 开启IDEA的自动编译:
File-Settings-Compiler-Build Project automatically:
如这一行右侧所提示的,这样就可以在非running/debugging时候自动编译了,即项目没有run或debug时候起作用。
由于一般使用热加载的目的就是,在正在running/debugging时进行自动加载,所以要开启running/debuging时的自动编译:
ctrl + shift + alt + / —— 选中 Registry,将下面这项勾选上:
② 给SpringBoot项目添加 spring-boot-devtools
第①步是设置了项目的自动编译功能,但是项目正在running的class还是老的class,只有重启项目后才会生效。现在使用spring-boot-devtools 能够自动重启,方法是在Maven中加入此依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
这样就可以了,不过注意
1)spring-boot-devtools顾名思义——SpringBoot的开发工具,除了热加载这个功能外,还有很多其他的功能,可以单单禁用功能,最简便的方法是在SpringBoot的配置文件中这样写:
2)spring-boot-devtools默认是开启了热加载,但是其监测的机制是:当前已经保存的文件跟上一次文件对比,如果有变化则重启。换句话说,如果你修改了文件,但是没有保存,该工具是不会自动加载你还没保存的文件的。这个道理很显而易见,值得注意的是,IDEA默认没有开启自动保存,并且,IDEA默认文件修改前后不加标记,这就很容易导致一个错误:修改了当前文件,但是由于IDEA没有对修改的文件进行标记,并且也没有开启自动保存,结果一直等着热加载呢,一直没反应。
这个小问题解决方法有两种:
a. 修改文件后手动Ctr+S
b.开启IDEA的自动保存功能
IDEA中实测,每次修改完了之后,Ctrl+S才会触发热加载监控,光修改完了,在那等着是没有反应的
3)不是项目中任何文件的修改都会触发automake,spring-boot-devtools默认的监控的时classpath下的文件,即各种java类,具体见: