Spring Boot源码分析
文章平均质量分 93
Spring Boot源码分析
一直不懂
笔记
展开
-
Spring Boot应用退出
每个SpringApplication都向JVM注册一个关闭钩子,以确保ApplicationContext在退出时优雅地关闭。所有标准的Spring生命周期回调(比如DisposableBean接口或@PreDestroy注释)都可以使用。此外,如果bean希望在调用SpringApplication.exit()时返回特定的退出代码,则可以实现org.springframework.boot.ExitCodeGenerator接口。然后可以将此退出代码传递给System.exit(),将其作为状态代码原创 2021-06-06 14:16:32 · 5734 阅读 · 2 评论 -
SpringApplication结束阶段
1、SpringApplication正常结束Spring Boot2.0为SpringApplication正常结束新引入了SpringApplicationRunListener的生命周期,即running(ConfigurableApplicationContext),该方法在Spring应用上下文中已准备,并且CommandLineRunner和ApplicationRunner Bean均已执行完毕。EventPublishingRunListener作为Spring ApplicationRu原创 2021-06-02 22:38:30 · 490 阅读 · 4 评论 -
SpringApplication运行阶段
SpringApplication运行阶段围绕run(String …)方法展开,该过程结合初始化阶段完成的状态进一步完善了运行时所需要准备的资源,随后启动Spring应用上下文,在此期间伴随Spring Boot和Spring事件的触发,形成完整的SpringApplication生命周期:SpringApplication准备阶段SpringApplication启动阶段SpringApplication启动后阶段1、SpringApplication准备阶段本阶段涉及的范围从run(St原创 2021-05-29 16:35:59 · 2087 阅读 · 0 评论 -
SpringApplication初始化阶段
在Spring Framework时代,Spring应用上下文通常由容器启动,如ContextLoaderListener或WebApplicationInitializer的实现类由Servlet容器装载并驱动。到了Spring Boot时代,Spring应用上下文的启动则通过调用SpringApplication.run(Object,String …)或SpringApplicationBuilder.run(String …)方法并配合@SpringBootApplication或@EnableAu原创 2021-05-17 00:02:07 · 3347 阅读 · 0 评论 -
Spring Boot条件化自动装配
标准@Configuration类是自动装配的底层实现,并且搭配Spring Framework @Conditional注解,使其能合理地在不同环境中运作。在《SpringBoot自动装配》中讨论过,@EnableAutoConfiguration利用AutoConfigurationImportFilter实现类OnClassCondition等过滤非法自动装配Class,从而间接地接触条件注解@ConditionalOnClass。条件注解@ConditionalOnClass采用元标注@Cond原创 2021-05-10 00:22:05 · 4117 阅读 · 0 评论 -
SpringBoot自动装配
在使用Spring Framework时,当@Component或@Configuration Class需要被配置时,应用需要借助@Import或@ComponentScan的能力,由于应用依赖JAR存在变化的可能,因此其中的@Component类所在的包路径也随之不确定,如果要实现当前应用所有组件自动装配,则@Import显然是无能为力的,开发人员自然会想到使用@ComponentScan扫描应用默认包路径,理论上默认包及其子包下的所有@Component类均会被@ComponentScan注册为Spr原创 2021-04-02 15:54:03 · 5270 阅读 · 0 评论 -
Spring注解属性别名
1、@AliasFor介绍@AliasFor是用于为注解属性声明别名的注解,从Spring Framework 4.2开始,核心Spring中的几个注释已更新为使用@AliasFor配置其内部属性别名。1.1、使用场景注解中的显式别名:在同一个注解中,@AliasFor可以在一对属性上声明,以表示它们是彼此可以互换的别名。 元注解中属性的显式别名:如果@AliasFor的注解属性设置...原创 2019-12-30 17:52:06 · 7177 阅读 · 0 评论 -
理解固化的Maven依赖
1、使用spring-boot-starter-parent或spring-boot-dependencies固化依赖在创建Spring Boot程序的时候通常将Maven项目的模块继承于spring-boot-starter-parent,如下:<parent> <groupId>org.springframework.boot</groupId>...原创 2019-12-25 12:23:18 · 4548 阅读 · 2 评论 -
SpringBoot可执行jar包启动原理
1、可执行jar目录结构在使用spring-boot-maven-plugin插件执行mvn package命令构建可执行jar文件(Fat JAR)后用“java -jar”命令就可以直接运行应用程序。<plugin> <groupId>org.springframework.boot</groupId> <artifactId>sprin...原创 2019-12-17 11:09:25 · 8405 阅读 · 0 评论