1 获取项目根路径
ClassUtils.getDefaultClassLoader().getResource("").getPath()
说明:
1
ClassUtils 导入的包为:[org.springframework.util.ClassUtils]
2
如需通过此路径再次指向指定的路径则需要添加指向路径的路径
ClassUtils.getDefaultClassLoader().getResource("").getPath()+“/指向指定路径的路径”
3
getResource 中不必填写
2
获取类的路径
className.class.getResource("").getPath()
说明:
1
className=“想获取的class”
3
可以把不修改/不会轻易修改的文件当作资源文件处理
1
存放位置:
2
取值方式:
示例代码:
定义:
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重xml的配置,提供了各种启动器,在运行过程中自定配置, 开发者能快速上手。
优点
独立运行(内置了tomcat)/
简化配置/
无代码生成的xml配置/
应用监控/
使用 JavaConfig 有助于避免使用 XML/
[
JavaConfig 的优点:
面向对象的配置/减少或消除 XML 配置/类型安全和重构友好
]
配置文件
名称 | 用途 | 配置文件 |
application | Spring Boot 项目的自动化配置 | .properties 和 .yml |
bootstrap | 1使用SpringCloudConfig配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息; 2一些固定的不能被覆盖的属性; 3一些加密/解密的场景; |
注解
注解名称 | 注解名称 | 用途 |
SpringBootApplication | SpringBootConfiguration | 组合了 @Configuration 注解,实现配置文件的功能 |
EnableAutoConfiguration | 打开自动配置的功能,也可以关闭某个自动配置的选项 | |
ComponentScan | Spring组件扫描 |
启动流程(粗略流程)
序号 | 事件名称 | 内容 |
1 | EventPublishingRunListener | 在 SpringBoot 启动过程的不同阶段用来发射内置的生命周期事件; |
2 | 准备环境变量 | 系统变量,环境变量,命令行参数 |
3 | 控制台打印 SpringBoot 的 bannner 标志 | |
4 | 根据不同类型环境创建不同类型的 applicationcontext 容器 | |
5 | FailureAnalyzers | 用来报告 SpringBoot 启动过程中的异常 |
6 | 为刚创建的容器对象做一些初始化工作 | |
7 | 刷新容器 | |
8 | 执行刷新容器后的后置处理逻辑 | |
9 | 调用 ApplicationRunner 和 CommandLineRunner 的 run 方法 | 加载业务数据 |
10 | 报告启动异常 | |
11 | 最终返回容器对象 |
运行特定的代码
可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法
Spring Boot 读取配置的方式
a:@Value注解读取方式/@ConfigurationProperties注解读取方式
b:读取指定文件:
@PropertySource+@Value注解读取方式(不支持yml)
@PropertySource+@ConfigurationProperties注解读取方式
c:Environment读取方式
Spring Boot 配置加载顺序
1、properties文件;
2、YAML文件;
3、系统环境变量;
4、命令行参数
配置文件加载顺序
项目根目录中config目录下/
项目根目录下/
项目resources目录中config目录下/
项目的resources目录下(高优先级的内容会覆盖底优先级的内容)
兼容spring,实现方式
ImportResource
保护 Spring Boot 应用方法
1在生产中使用HTTPS
2使用Snyk检查你的依赖关系
3升级到最新版本
4启用CSRF保护
5使用内容安全策略防止XSS攻击