您的位置:首页 > 汽车 > 新车 > SpringBoot小结

SpringBoot小结

2024/11/17 5:34:16 来源:https://blog.csdn.net/2301_78658028/article/details/141052241  浏览:    关键词: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优先。遇到需要修改的组件的配置项流程为:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com