推荐书籍:
- SpringBoot 四个核心概念:
- 起步依赖(Starter Dependcy)
- 自动配置(Auto-Config)
- CLI(Command Line Interface)
- Actuator
- 使用 Spring Initializr 创建 Spring Boot 项目
- SpringBoot 标准目录:
- 整体上,符合maven标准目录
- 静态资源文件(js、css、jpg等),
- 放在src/main/resources/static
- 注意controller的mapping url不要覆盖静态资源文件的路径。
- 模板文件(themeleaf、jsp等)
- 放在src/main/resources/templates
- SpringBoot属性配置文件:
- src/main/resources/application.yml
- @SpringBootApplication
- 将三个有用的注解组合在了一起
- @Configuration:标明该类使用Spring基于Java的配置
- @ComponentScan:启用组件扫描
- @EnableAutoConfiguration :启用SpringBoot自动配置
- 启动引导类(bootstrap class)
- 提供main方法入口
- 使得web项目,通过内嵌的web server,以jar的方式运行。
- 将三个有用的注解组合在了一起
- 起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),
- 定义了实现某种功能所需的依赖库(即比Dependcy,抽象一层到module/功能)
- 确保引入的全部依赖都能相互兼容
- 定义了实现某种功能所需的依赖库(即比Dependcy,抽象一层到module/功能)
- 不需要指定版本号,
- 起步依赖本身的版本是由正在使用的Spring Boot的版本来决定的,
- 而起步依赖则会决定它们引入的传递依赖的版本
- 参考文档,查看SpringBoot内置的全部起步依赖,
- 覆盖起步依赖引入的传递依赖
- Maven总是会用最近的依赖,
- 在项目的构建说明文件里增加的这个依赖,会覆盖传递依赖引入的另一个依赖
- 或者显式<exclusions>某些依赖,然后再声明<dependency>引入新依赖
- Maven总是会用最近的依赖,
- 自动配置,利用了Spring条件化配置的特性
- Spring Boot提供的一系列条件化注解,如
- @ConditionalOnBean(配置了某个特定Spring Bean)
- @ConditionalOnClass(Classpath里有指定的类)等等
- Spring Boot提供的一系列条件化注解,如
- 使用src/main/resources/application.yml可以修正自动配置
- 但是自动配置依然有效
- 覆盖自动配置很简单,就当自动配置不存在,直接显式地写一段配置
- 但这样,会使自动配置失效。
- 推荐使用Spring Data JPA,作为orm解决方案
- SpringBoot在Idea中热部署:
- 左侧菜单,选中相关java、html等文件,ctrl+shift+F9 recomplie
- SpringBoot使用 Profile 基于application.yml属性配置
- Spring Boot自动配置的默认错误处理器会查找名为error的视图,
- Spring Boot Actuator的关键特性是在应用程序里提供众多Web端点,
- 通过它们了解应用程序运行时的内部状况
- Actuator提供了13个端点
- /autoconfig 自动配置报告、
- /beans
- spring beans 报告
- /env 环境变量报告
- /health 报告应用程序的健康指标
- /metrics 各种应用程序度量信息,比如内存用量和HTTP请求计数
- POST /shutdown 关闭应用程序
- endpoints.shutdown.enabled设置为true
- 两种方式:
- REST端点
- remote shell
- 定制Actuator:
- 修改Actuator端点 URI
- 启用和禁用Actuator 端点
- 添加自定义度量信息
- 计数器CounterService接口
- 记录指标值GaugeService接口(比如用于保存timestamp)
- 你无需实现这些接口。Spring Boot已经提供了两者的实现。
- 我们所要做的就是把它们的实例注入所需的Bean,在适当的时候调用其中的方法,更新想要的度量值
- PublicMetrics接口,提供完全自定义的度量信息。
- 默认情况下,/trace端点报告的跟踪信息都存储在内存仓库里,100个条目封顶
- 可以声明自己的InMemoryTraceRepository Bean,将它的容量调整至100以上。
- 或者实现Spring Boot的TraceRepository接口,将跟踪条目保存到其他地方
- Actuator自带了很多健康指示器,能满足常见需求,
- 比如报告应用程序使用的数据库和消息代理的健康情况。
- 实现 HealthIndicator接口,自定义健康指示器