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优先。遇到需要修改的组件的配置项流程为:

相关推荐
一屉大大大花卷33 分钟前
初识Neo4j之入门介绍(一)
数据库·neo4j
凯基迪科技36 分钟前
exe软件壳的分类----加密保护壳
java
叁沐1 小时前
MySQL 08 详解read view:事务到底是隔离的还是不隔离的?
mysql
wuxuanok1 小时前
Web后端开发-分层解耦
java·笔记·后端·学习
周胡杰1 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj0011 小时前
navicate如何设置数据库引擎
数据库·mysql
ladymorgana1 小时前
【Spring Boot】HikariCP 连接池 YAML 配置详解
spring boot·后端·mysql·连接池·hikaricp
赵渝强老师1 小时前
【赵渝强老师】Oracle RMAN的目录数据库
数据库·oracle
暖暖木头1 小时前
Oracle注释详解
数据库·oracle
kyle~1 小时前
C/C++字面量
java·c语言·c++