SpringBoot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重XML的配置,提供了各种启动器,在运行过程中自定配置, 开发者能快速上手。它的优势是独立运行、 简化配置、自动配置 、无代码生成和XML配置, 无需部署war文件。
-快速创建独立运行的spring项目与主流框架集成
-使用嵌入式的servlet容器,应用无需打包成war包
-starters自动依赖与版本控制
-大量的自动配置,简化开发,也可修改默认值
-准生产环境的运行应用监控
-与云计算的天然集成
SpringBoot 可以通过 @PropertySource,@Value,@Environment, @ConfigurationProperties 来绑定变量。
YAML是一种人类可读的数据序列化语言。它通常用于配置文件。与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。
.properties和.yml,它们的区别主要是书写格式不同。yml采取的是缩进的格式 不支持@PerpertySource注解导入配置。
SpringBoot配置加载顺序优先级是:propertiese文件、YAML文件、系统环境变量、命令行参数。
@SpringBootApplication是Spring Boot的核心注解
主要组合包含了以下3个注解:
1@SpringBootConfiguration: 组合了@Configuration 注解,实现配置文件的功能。
2@EnableAutoConfiguration: 打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
3@ComponentScan: Spring组件扫描
1)打包用命令或者放到容器中运行
2)用 Maven/ Gradle 插件运行
3)直接执行 main 方法运行
方式一:点击idea中pacakage插件,war包生成在target文件夹下
方式二:命令方式,通过输入maven打包命令mvn package 即可打war包成功,war包生成在target文件夹下!
添加如下文件,其中dev是开发环境,test是测试环境,prod是生产环境
application-dev.properties
application-test.properties
application-prod.properties
Spring Loaded和Spring-boot-devtools
可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。
1)添加MyBatis的starter maven依赖org.mybatis.spring.boot.mybatis-spring-boot-starter.jar;
2)在MyBatis的接口中 添加@Mapper注解;
3)在application.yml配置数据源信息;
跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。这种解决方案并非 SpringBoot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
}
可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法。
Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用SpringJPA访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。
在Spring 和 SpringMVC 中需要配置大量的参数。Spring Boot 提供了配置应用程序和框架所需要的基本配置。这就是自动配置。
SpringBoot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxProperties类是通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的。
SpringBoot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架,SpringBoot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,SpringBoot将使用Logback作为默认日志框架。无论使用哪种日志框架,Spring Boot都支持配置将日志输出到控制台或者文件中。
spring-boot-starter启动器包含spring-boot-starter-logging启动器并集成了slf4j日志抽象及Logback日志框架。
Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。
默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。
安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的,可以用来禁用安全性。
只有在执行机构端点在防火墙后访问时,才建议禁用安全性。
Spring 通过使用 @ControllerAdvice 注解处理异常,实现一个ControllerAdvice 类来处理控制器类抛出的所有异常。
1.在生产中使用HTTPS
2.使用Snyk检查你的依赖关系
3.升级到最新版本
4.启用CSRF保护
5.使用内容安全策略防止XSS攻击
1.配置变更
2.JDK 版本升级
3.第三方类库升级
4.响应式 Spring 编程支持
5.HTTP/2 支持
6.配置属性绑定