Spring Boot基础
Spring Boot介绍
Spring Boot搭建
涉及Java Web开发的必备工具就不赘述了(如Java、Maven、IDEA等),这里直接介绍Spring Boot搭建
搭建Spring Boot有两种方式:
-
IDEA集成的Spring Initializr:IDEA在创建新项目时就有"Spring Initializr"的选项,具体搭建方式可以参考这篇文章
-
Spring 官网 start.spring.io:官方提供了一个在线网站用于配置Spring Boot,即Spring Initializr,选择需要的选项后点击"GENERATE",会得到一个压缩包,解压后用IDEA打开即可(Maven会自动下载依赖)
我个人更喜欢这种方式,下面做一个视频演示
找到项目主类的java文件(如DemoApplication.java),添加一个名为/hello的端点,代码如下:
@RestController
@GetMapping("/hello")
public String hello(@RequestParam(value = "name",defaultValue="world") String name){
return String.format("Hello %s!",name);
}
启动Spring Boot进行测试,具体如下:
Spring Boot其他技巧
修改Spring Boot版本
在搭建本地漏洞测试平台时,可能涉及多个Spring Boot版本,这里讲一下如何修改Spring Boot版本。
以 Maven 项目为例,手动修改 pom.xml
文件中的<version>3.2.0</version>
(用于指定 Spring Boot 的版本号)和<java.version>21</java.version>
(用于指定 Java 的版本号),最后点击"加载Maven变更"即可。
因为Spring Boot有最低Java版本的限制,所以在变更Spring Boot版本时,要注意Java版本是否支持
这里附一张各Spring Boot版本对应java版本图,如下:
这里还是做一个视频演示,如下:
修改Web服务端口号
在项目下的src\main\resources\
下的application.properties
文件中添加如下配置项即可
# 比如这里修改为8100端口
server.port=${port:8100}
Spring Boot Actuator
Actuator功能说明
Spring Boot Actuator的功能是在应用程序里提供众多Web端点,通过它们了解应用程序运行时的内部状况。
注意,不同版本的Spring Boot所暴露的端点是有差异的。
这里列举几个Actuator提供的常用端点,如下:
Actuator端点暴露
SpringBoot <= 1.5.x 以下,是不需要任何配置的,直接就可以访问到端点。
而如果1.5.x<= SpringBoot <=2.x,那么默认只能访问到/health
和/info
端点。
当SpringBoot >=2.x时,默认也是只能访问/health
、/info
,但是访问的端点方式发生了改变,相比于1.x版本的端点多了个前缀 /actutator
,即如/health
变成了/actuator/health
。
SpringBoot各版本暴露端点的方式不同,下面列举几个:
-
Spring Boot 1.5.x:在application.properties中添加如下内容即可暴露所有端点:
# 这种操作实质上是关闭认证,允许其他端点未授权访问 management.security.enabled=false # 如果想要针对某个端点,比如env,则可以这样设置 endpoints.env.sensitive=false
-
Spring Boot >= 2.x:在application.properties中添加如下内容
# 启用端点env management.endpoint.env.enabled=true # 暴露端点env。如果需要暴露多个端点使用逗号,隔开即可 management.endpoints.web.exposure.include=env # 或者可以使用下面这个配置项直接启用和暴露所有端点 management.endpoints.web.exposure.include=*
这里提一下启用端点
和暴露端点
:
修改管理端点的路径
管理端点的路径是能够修改的,如下:
-
Spring Boot 1.x:在application.properties中添加下面的配置项
# 比如将管理端点的路径设为/manage management.context-path =/manage
端点的访问方式就更改了,如下:
# 原来的 /dump /autoconfig /metrics # 更改后的 /manage/dump /manage/autoconfig /manage/metrics
-
Spring Boot 2.x:在application.properties中添加下面的配置项
# 比如将管理端点的路径设为/manage management.endpoints.web.base-path=/manage
对比一下更改前后的区别,便于理解:
# 原来的 /actuator/beans /actuator/env /actuator/health # 更改后的 /manage/beans /manage/env /manage/health
端点改名
Spring Boot也支持对端点改名,但是这种情况比较少见
# 把/health端点改min为/healthcheck
management.endpoints.web.path-mapping.health=healthcheck
术语
- 端点(endpoint):就是网址目录,比如
http://localhost:8100/hello
、http://localhost:8100/actuator
中的/hello
、/actuator
在Spring Boot就称为端点
鸣谢
- Spring Boot Actuator 未授权的测试与利用思路 - 先知社区 (aliyun.com)
- start.spring.io 创建旧版本的 Spring Boot 项目 - spring 中文网 (springdoc.cn)
- Spring Boot入门三:创建Spring Boot项目;(包括【Spring 官网start.spring.io】方式,【IDEA集成的Spring Initializr】方式)-CSDN博客
- Spring Boot Actuator 中的端点管理 - spring 中文网 (springdoc.cn)
- Spring Boot 2.x中的management.security.enabled=false无效问题-CSDN博客