什么是Spring Boot
Spring Boot是Spring开源组织下的子项目,是Spring组件一站式处理方案,主要简化了使用Spring的难度,简化了繁重的配置,提供各种启动器,使开发者能快速上手
Spring Boot优点
独立运行,配置简单,应用监控,自动配置,上手容易,无需代码生成和XML配置
Spring Boot核心配置文件
- application配置文件,主要用户自动化配置。
- bootstrap配置文件,在使用 Spring Cloud Config配置中新世,需要在配置文件中增加连接到配置中心的配置属性来加载外毒配置中心的配置信息,如少量固定的不能被覆盖的属性,少量加密/解密的场景。
Spring Boot配置文件格式
- .propertise
student.name = laomao
student.age = 22
- .yml(不支持@PropertySource注解导入配置)
student:
name: laomao
age: 22
Spring Boot核心注解的含义
- @SpringBootApplication 启动类上的注解组合了@Configuration,@EnableAutoConfiguration,@ComponentScan,
- @SpringBootConfiguration 组合了@Configuration注解,实现配置文件的功能
- @EnableAutoConfiguration 打开自动配置功能,也可以关闭某个自动配置的选项。如关闭数据源自动配置功能 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}).
- @ComponentScan Spring组件扫描注解
Spring Boot自动配置的原理
自动配置的核心就是@EnableAutoConfiguration, @Configuration, @ConditionalOnClass这些注解,首先得是个配置文件,其次根据类路径下是否有这个类去自动配置
Spring Boot读取配置的方式
可以通过@PropertySource, @Value, @Environment, @ConfigurationProperties来绑定变量
如何开启Spring Boot特性
- 继承spring-boot-starter-partent
- 导入spring-boot-dependencies
Spring Boot是否需要独立的容器运行
可以不需要,Spring Boot内置了Tomcat/Jetty等容器
运行Spring Boot项目的方式
- 打包用命令mvn install,在命令行输入 java -jar "xx/xx/xx.jar",或者放到容器中运行
- 用Maven/Gradle插件运行
- 直接执行main方法
Spring Boot实现热部署的方法
- 使用springloaded配置依赖,用mvn spring-boot:run命令启动。停止服务只能使用ctrl+c,如果设置后台启动,需要kill进程。
- 使用springloaded本地加载启动,下载springloaded的工具包存放指定目录,并配置jvm参数 -javaagent:jar包存放地址 -noverify(-javaagent:冒号指在执行main方法之前执行制定代码,-noverify 意为关闭java字节码校验功能)。建议在生产环境下使用脚本启动。
- 使用spring-boot-devtools配置依赖,简单方便快捷,但每次修改代码后整个项目都需要重新加载,比较慢。建议开发测试环境下使用。
Spring Boot如何兼容老Spring项目
使用@ImportResource注解导入老Spring项目配置文件
Spring Boot中的Starters是什么
Starters可以理解为启动器,它包含了一系列可以继承到应用的依赖包,可以一站式集成Spring及其它技术,而不需要找示例代码和依赖包。比如想使用Spring JPA访问数据库,只需加入 spring-boot-starter-data-jps 启动器依赖就能使用
Spring Boot支持的日志框架
支持Java Util Logging, Log4j2, Lockback作为日志框架,如果使用Starters启动器,Spring Boot将使用Lockback作为默认日志框架
如何在Spring Boot启动时候运行少量特定代码
实现接口ApplicationRunner或者CommandLineRunner,实现方式一样,都只提供了一个run方法。