Springboot也没有什么新技术,只是为了简化开发
四大核心机制
- 自动配置(AutoConfiguration):针对很多Spring应用程序和常见的应用功能,Springboot能自动提供相关配置(如JdbcTemplate的Bean)。由Springboot考虑程序的配置(当然程序员可以修改)
- 起步依赖(Starter):告诉Spring boot需要什么功能,它就能引入需要的依赖库
- Actuator:让你能够深入运行中的Spring Boot应用程序,一探Spring boot程序的内部信息
- 命令行界面(Spring Boot CLI):这是Spring Boot的可选特性,主要针对Groovy语言使用
自动装配
自动装配使我们摆脱了Spring的诸多Bean配置,只需导入相应jar包,Springboot就会自动装配默认配置
起步依赖
起步依赖其实就是特殊的Maven依赖或Gradle依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
起步依赖做了什么?
把常用库聚合在一起,组成几个特定功能而定制的依赖
起步依赖把你从“需要哪些库的哪些版本”中解脱出来,且不用担心库之间的兼容性
例如:上面的spring-boot-starter-web库由多个库组成,我们使用时不用担心兼容问题
Actuator
spring-boot-actuator模块提供了一个监控和管理生产环境的模块,可以使用http、jmx、ssh、telnet等来管理和监控应用
配置
maven依赖,导入jar包后,因为自动装配,实际上已经可以使用了
<!-- 引入Actuator监控依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
项目启动成功后访问http://localhost:8080/actuator
但是因为默认只开放/health和/info,我们还需要更多的信息
application.yml配置
management:
endpoints:
web:
exposure:
#暴露监控访问接口,默认只开放/health和/info,*表示所有
include: '*'
#显式屏蔽监控访问接口
exclude: env,metrics
再访问,就会发现开放了很多端口,如beans
通过http://localhost:8080/actuator/beans访问,查看SpringBoot自动装配的bean
这也验证了SpringBoot的自动装配:由Springboot考虑程序的配置
一些常用接口
- /actuator
列出所有可用接口
- /health/{component}/{instance} GET
报告程序的健康指标,这些数据由HealthIndicator实现类提供
- /info GET
获取程序指定发布的信息,这些信息由配置文件中info打头的属性提供
- /configprops GET
描述配置属性(包含默认值)如何注入到bean
- /beans GET
描述程序中的bean,及之间的依赖关系
- /env GET
获取全部环境属性
- /env/{name} GET
根据名称获取指定的环境属性值
- /mappings GET
描述全部的URI路径,及和控制器的映射关系
Spring Boot CLI
Spring Boot CLI是一个命令行工具,可以快速搭建spring原型项目
下载配置
官网:随便挑一个版本下载,windows就下载bin.zip结尾的压缩包,然后解压,其中有一个bin文件夹,里面的spring.bat就是windows脚本
去环境变量-系统变量-Path: 添加对应bin路径
然后cmd打开输入spring --version
验证安装成功
编写HelloWorld
随便在哪里写一个groovy脚本
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
然后cmd运行:spring run D:\JavaProject\SpringbootCli\spring-2.0.5.RELEASE\app.groovy
(Resolving dependencies可能比较久)
就可以本地访问了http://localhost:8080/
然而,实际上Spring boot Cli 并不常用,毕竟到了大点的项目就难以使用