史上最详细的 Apereo CAS 5.3开发教程:四、CAS 定制化必须明白Spring Boot自动加载的原理

本文是Apereo CAS 5.3开发教程的第四部分,重点讲解Spring Boot自动加载的原理。在详细分析源码的基础上,解释了SpringApplication如何加载META-INF/spring.factories文件,并展示了如何利用这一原理在CAS自定义功能时让Spring Boot启动时自动加载我们的类。文章还提到了通过maven-war-plugin的overlay功能来无侵入地修改CAS项目中的接口和配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apereo CAS 5.3 项目源码地址:https://github.com/apereo
CAS 系列详解:https://blog.youkuaiyun.com/makyan/column/info/36060
上一节内容:https://blog.youkuaiyun.com/makyan/article/details/88907349
本节继上一节内容讲解

四、Spring Boot自动加载的原理

在讲解CAS 5.3 Server 端自定义注册、修改密码、验证等功能之前,我们先来了解一下Spring Boot 自动加载的原理。

4.1. SpringBoot自动加载的原理:

SpringBoot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器。

4.2. 源码分析

SpringBoot在进行对象实例化时,使用的是SpringApplication,这是SpringBoot的入口程序,它通过run方法运行。
分析SpringApplication类的源码

public static void main(String[] args) throws Exception {
    run(new Object[0], args);
}

查看run方法

 public static ConfigurableApplicationContext run(Object[] sources, String[] args) {
    return (new SpringApplication(sources)).run(args);
}

run方法只是利用自己的构造器,创建自己的一个对象,然后再调用run方法。
查看这个构造器SpringApplication(sources)

  public SpringApplication(ResourceLoader resourceLoader, Object... sources) {
        this.bannerMode = Mode.CONSOLE;
        this.logStartupInfo = true;
        this.addCommandLineProperties = true;
        this.headless = true;
        this.registerShutdownHook = true;
        this.additionalProfiles = new HashSet();
        this.resourceLoader = resourceLoader;
        this.initialize(sources);
    }

发现这个构造器里面调用了一个自己的initializa方法
查看initialize(sources) 方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值