SpringBoot小结

为什么学SpringBoot?

Spring Boot 简化了基于Spring的应用开发,只需要"run"就能创建一个独立的、生产级别的Spring应用。

Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置,存放默认配置的包就是启动器 starter),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。

Spring Boot 主要特点是:

  • 创建独立的Spring应用,为所有 Spring 的开发者提供一个非常快速的、广泛接受的入门体验
  • 直接嵌入应用服务器,如tomcat、jetty、undertow等;不需要去部署war包
  • 提供固定的启动器依赖去简化组件配置;实现开箱即用(启动器starter-其实就是Spring Boot提供的一个jar 包),通过自己设置参数(.properties或.yml的配置文件),即可快速使用。
  • 自动地配置Spring和其它有需要的第三方依赖
  • 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等
  • 绝对没有代码生成,也无需 XML 配置。

启动类

Spring Boot项目通过main函数即可启动,我们需要创建一个启动类:

启动类需要加上@SpringBootApplication注解,通过run()方法来启动程序。

自动装配

SpringBoot核心注解@SpringBootApplication。是一个组合注解,组合了@ComponentScan、@SpringBootConfiguration、@EnableAutoConfiguration 。

@EnableAutoConfiguration 注解组合了 @AutoConfigurationPackage 、
@Import(AutoConfigurationImportSelector.class) 注解。
@AutoConfigurationPackage 底层也是一个 @Import(AutoConfigurationPackages.Registrar.class) ,
其会把启动类的包下组件都扫描到 Spring 容器中。

@Import(AutoConfigurationImportSelector.class) 自动配置的核心类
AutoConfigurationImportSelector.class ,该类导入大量的自动配置类, debug 可以发现,其读取的是 classpath下的 META-INF/spring.factories下配置文件。
当然 spring.factories 文件中配置类默认不会都生效,具体哪些配置类生效由配置类上标注的
@ConditionalOnClass 注解来决定。
总结:

Spring Boot 通过 maven 中的 starter 导入了所需场景下的 jar 包,并通过主启动类上的
@SpringBootApplication 中的 @EnableAutoConfiguration 读取了类路径下的 META
INF/spring.factories 下 EnableAutoConfiguration 的配置类,这些配置类使用
@ConditionalOnClass 来标注,根据 @ConditionalOnClass 标注的约束条件来引入自动化的环境配置。
如果我们自己配置了相关Bean,那么会覆盖默认的自动配置的Bean我们还可以通过配置application.yml文件,来覆盖自动配置中的属性

全局配置

SpringBoot的默认配置,都会读取默认属性,而这些属性可以通过自定义 application.properties 文件来进行覆盖。这样虽然使用的还是默认配置,但是配置中的值改成了我们自定义的。因此,学习SpringBoot的第二件事情,就是通过 application.properties 来覆盖默认属性值,形成自定义配置。我们需要知道SpringBoot的默认属性key,非常多,可以再idea中自动提示。

属性文件支持两种格式,application.properties和application.yml。如果properties和yml文件都存在,如果有重叠属性,默认以Properties优先。遇到需要修改的组件的配置项流程为:

相关推荐
yumgpkpm14 分钟前
CMP (类ClouderaCDP7.3(404次编译) )华为鲲鹏Aarch64(ARM)信创环境 查询2100w行 hive 查询策略
数据库·数据仓库·hive·hadoop·flink·mapreduce·big data
paishishaba31 分钟前
JAVA面试复习笔记(待完善)
java·笔记·后端·面试
四谎真好看1 小时前
Java 黑马程序员学习笔记(进阶篇19)
java·笔记·学习·学习笔记
web安全工具库1 小时前
Makefile 模式规则精讲:从 %.o: %.c 到静态模式规则的终极自动化
linux·运维·c语言·开发语言·数据库·自动化
'需尽欢'1 小时前
基于 Flask+Vue+MySQL的研学网站
python·mysql·flask
從南走到北1 小时前
JAVA代泊车接机送机服务代客泊车系统源码支持小程序+APP+H5
java·开发语言·微信小程序·小程序
清静诗意2 小时前
Ubuntu 系统下 MySQL 8.0 安装与远程访问完整教程
mysql·ubuntu·adb
apocelipes7 小时前
golang unique包和字符串内部化
java·python·性能优化·golang