springboot应用
springboot特性
- springboot starter 将常用的依赖分组打包到一个依赖中,一次可导入多个依赖。解决了a.依赖坐标繁琐 b.依赖版本冲突问题
- 减少了配置,采用javaConfig的方式对Spring配置,提供了大量注解。 基于spring4.0
- 自动配置,利用spring对条件配置的支持,推测出所需bean并自动装配它们,减少了文件配置工作量。
- 内置tomcat Jetty undertow,可打包成jar包直接运行
约定优于配置
约定优于配置(Convention over configuration),又称按约定编程,是一种软件设计规范。本质上是对系统、类库或框架中一些东西假定一个大众化合理对默认值(缺省值)
好处:大大减少了配置
springboot热部署
修改完代码不需要重启服务,项目将自动重新编译加载,提升了开发效率
添加依赖
<!-- 引入热部署依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
热部署原理分析
springboot 对类加载的两种类加载器
base-classloader: 用于第三方jar包的加载
restartClassLoader: 加载开发人员自己开发的代码
当检测到有代码修改时,restartClassLoader将重新加载开发人员自己开发的代码,而第三方包不会重新加载,节约了时间,比重启服务快。
热部署排除资源
例:/static /public 修改后不触发重新加载,application.properties中添加
spring.devtools.restart.exclude=static/**,public/**
全局配置文件
全局配置文件可以为application.properties或application.yaml或application.yml
全局配置文件的优先级
springboot 2.4.0官网链接
对应项目中的位置
相同属性数字越大优先级越高,不同属性则互补
属性注入常用注解
@Configuration:声明一个类作为配置类
@Bean:声明在方法上,将方法的返回值加入Bean容器
@Value:属性注入
@ConfigurationProperties(prefix = “jdbc”):批量属性注入
@PropertySource(“classpath:/jdbc.properties”)指定外部属性文件。在类上添加
@ConfigurationProperties vs @Value
特征 | @ConfigurationProperties | @Value |
---|---|---|
宽松的绑定 | yes | Limited(详见下方官网截图) |
元数据支持 | yes | no |
SpEL 表达式 | no | yes |
应用场景 | 批量属性绑定 | 单个属性绑定 |
springboot 日志框架
日志-抽象层 | 日志-实现层 |
---|---|
JCL(Jakarta Commons Logging)、SLF4J(Simple Logging Facade for Java)、jboss-logging | jul(java.util.logging)、log4j、logback、log4j2 |
Spring 框架选择使用了 JCL 作为默认日志输出。而 Spring Boot 默认选择了 SLF4J 结合 LogBack