Spring Boot

Spring Boot的特点
Spring Boot提供了一些预先组织好的“起步依赖(spring-boot-starter),从而使开发者不再需要自行维护复杂的组件(jar包)依赖,只需要声明”我需要什么功能“就可以
Spring Boot让Spring应用开发从早期的以”组件为中心“,转换为 ”以功能为中心“
Spring Boot 在应用程序里嵌入了Servlet容器(Tomcat、Jetty或Undertow),可独立运行,无需部署到外部的Servlet容器中
Spring Boot2.x 还提供了支持响应式编程特性的容器(默认为Netty),因此,它的应用就是一个jar包,可以直接使用java-jar命令运行
SpringBoot2.x只支持JDK 8 及以上版本

基本特性:
核心理念:约定大于配置
开箱即用,简单、快速、生产就绪型功能
内嵌tomcat、简化Maven
与生态圈的深度整合
注重运维,天然支持自我监控
Cloud Native 的大方向
最佳实践不嫌多,固化到系统实现中才是王道

两种创建Spring Boot项目的方法
1.直接访问Spring网站在线创建项目后下载,也可以咋IntelliJ、STS等IDE中”间接“调用Spring官网的这个功能创建项目
2.使用命令行 CLI 是一种常见的项目创建方式,也被称为”脚手架“在Web前端项目(比如Angular\Vue和React)中大量应用

Spring的基础配置
●可SpringBootApplication
●定制banner
●Web容器配置
●Properties配置
●类型安全配置属性
●YAML配置
●profile多环境配置

自动配置原理
SpringBoot启动的时候加载主配置类(@SpringBootApplication),开启了自动配置功能 @EnableAutoConfiguration。
利用AutoConfigurationImportSelector给容器中导入一些组件;可以查看selectImports()方法的内容;
将类路径下 META-INF/spring.factories 里面配置的所有AutoConfiguration的值加入到了容器中;
每一个这样的 xxxAutoConfiguration类都是容器中的一个组件,都加入到容器中;用他们来做自动配置;
@EnableConfigurationProperties:这是一个开启使用配置参数的注解,value值就是我们配置实体参数映射的ClassType,将配置实体作为配置来源。

以下为SpringBoot内置条件注解:
@ConditionalOnBean:当SpringIoc容器内存在指定Bean的条件
@ConditionalOnClass:当SpringIoc容器内存在指定Class的条件
@ConditionalOnExpression:基于SpEL表达式作为判断条件
@ConditionalOnJava:基于JVM版本作为判断条件
@ConditionalOnJndi:在JNDI存在时查找指定的位置
@ConditionalOnMissingBean:当SpringIoc容器内不存在指定Bean的条件
@ConditionalOnMissingClass:当SpringIoc容器内不存在指定Class的条件
@ConditionalOnNotWebApplication:当前项目不是Web项目的条件
@ConditionalOnProperty:指定的属性是否有指定的值
@ConditionalOnResource:类路径是否有指定的值
@ConditionalOnSingleCandidate:当指定Bean在SpringIoc容器内只有一个,或者虽然有多个但是指定首选的Bean
@ConditionalOnWebApplication:当前项目是Web项目的条件

你可能感兴趣的:(Spring Boot)