当前位置: 首页 > news >正文

Spring (14)什么是Spring Boot

Spring Boot是一个开源的Java基础框架,旨在简化Spring应用的创建和开发过程。Spring Boot通过提供一套默认配置(convention over configuration),自动配置和启动器(starters)来减少开发者的开发工作量和配置时间。Spring Boot的目的是让开发者能够更快速地启动和运行新的Spring应用程序,同时也能够快速和轻松地对应用程序进行扩展或自定义。

使用Spring Boot可以很容易地创建独立的、生产级别的、基于Spring框架的应用程序。Spring Boot应用程序可以打包为jar文件并通过java -jar命令独立运行,也可以打包为war文件部署到Web服务器中。

核心特征

  • 自动配置:Spring Boot会根据项目中包含的jar依赖自动配置应用程序的行为。例如,如果classpath下有H2数据库的jar包,Spring Boot会自动配置内存数据库。
  • 起步依赖:Spring Boot提供了一系列的起步依赖(starters),使得构建应用程序时可以快速添加所需的依赖。
  • 命令行界面:Spring Boot CLI(命令行界面)允许开发者通过Groovy脚本快速地进行Spring应用开发。
  • Actuator:它提供了生产级别的功能,如监控和管理应用程序。

深入解析

在Spring Boot内部,主要通过@EnableAutoConfiguration注解来实现自动配置的魔法。这个注解本身定义了一个模型,它会扫描classpath中的内容,寻找META-INF/spring.factories文件中列出的所有配置类,并根据条件决定是否应用这些配置。

示例代码(Spring Boot应用)
@SpringBootApplication
public class ExampleApplication {public static void main(String[] args) {SpringApplication.run(ExampleApplication.class, args);}@Beanpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) {return args -> {System.out.println("Inspect the beans provided by Spring Boot:");String[] beanNames = ctx.getBeanDefinitionNames();Arrays.sort(beanNames);for (String beanName : beanNames) {System.out.println(beanName);}};}
}

这段代码使用了@SpringBootApplication注解,这是一个方便的注解,等价于使用@Configuration@EnableAutoConfiguration@ComponentScan与它们的默认属性。这里定义了一个commandLineRunner方法,它会在应用启动后执行。

源码分析

让我们来分析下@SpringBootApplication@EnableAutoConfiguration的源码来更深入地理解它们的作用。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {// ...
}

@SpringBootApplication注解包含了@EnableAutoConfiguration,而这个注解的作用是开启Spring Boot的自动配置功能,它会让Spring Boot根据添加的jar依赖自动配置应用。

@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {// ...
}

@EnableAutoConfiguration注解通过@Import注解引入了AutoConfigurationImportSelectorAutoConfigurationImportSelector通过读取META-INF/spring.factories文件中的配置,来加载并配置Spring Boot的自动配置类。

总结

Spring Boot是为了简化Spring应用的初始搭建以及开发过程。它借助于“约定优于配置”的理念,尽可能自动化配置任务。通过提供大量的起步依赖,Spring Boot使得项目的依赖管理变得简单。同时,Spring Boot内部的自动配置特性减少了显式配置的需求,使得开发者能够更专注于业务逻辑的实现。

http://www.lryc.cn/news/351180.html

相关文章:

  • 区间预测 | Matlab实现CNN-KDE卷积神经网络结合核密度估计多置信区间多变量回归区间预测
  • Java集合框架全景解读:从源码到实践精通指南
  • Python | Leetcode Python题解之第107题二叉树的层序遍历II
  • H4vdo 台湾APT-27视频投放工具
  • 数据结构(树)
  • HTML静态网页成品作业(HTML+CSS)——川西旅游介绍网页(2个页面)
  • MySQL数据库单表查询中查询条件的写法
  • SQL靶场搭建
  • Cocos Creator 帧动画播放组件制作详解
  • 基于STM32控制的双轮自平衡小车的设计
  • Dijkstra算法在《庆余年》中的应用:范闲的皇宫之旅
  • HTML静态网页成品作业(HTML+CSS)——利物浦足球俱乐部介绍网页设计制作(5个页面)
  • mac 查看占用80端口的命令
  • 【Qt常用控件】—— 布局管理器
  • 模板中的右值引用(万能引用)、引用折叠与完美转发
  • Nacos启动报错:[db-load-error]load jdbc.properties error
  • 5.23相关性分析
  • 使用 Sonatype Nexus Repository Manager 如何安装npm.md
  • console如何连接远程机器上的java程序
  • 高稳定数显芯片防干扰抗噪数码屏驱动高亮LED驱动IC-VK16K33A/AA 最大13×3的按键扫描
  • Redis离线安装(单机)
  • [Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解
  • ChatGPT移动应用收入在GPT-4o发布后迎来最大涨幅
  • 汉语拼音 如何 转化成粤语拼音 的
  • 本地电子邮件测试工具-MailHog
  • Java18新特性
  • 大象资讯:PostgreSQL 17 Beta 1 发布!
  • Rust:如何在 Windows 的 Linux 子系统(WSL)下安装
  • 工具分享:VsCode注释神器,koro1FileHeader
  • 水面漂浮物生活垃圾识别检测系统