Spring Boot自动配置原理

一、自动配置原理。

        遵循约定大约配置的原则,在boot程序启动后,起步依赖中的一些bean对象会自动注入到ioc容器。当程序引入spring-boot-starter-web起步依赖,启动后,会自动往ioc容器中注入DispatcherServlet,可以使用简单的程序进行验证,我们修改启动类程序,添加以下代码运行验证是否是此原理:

@SpringBootApplication
public class Maven_Application
{
    public static void main( String[] args )
    {

        ApplicationContext context = SpringApplication.run(Maven_Application.class, args);
        System.out.println(context.getBean("dispatcherServlet"));
    }
}

        在pom.xml文件内存在web的起步依赖:

        运行启动类,查看控制台:

        发现运行无误,结果与预期保持一致,说明当程序引入spring-boot-starter-web起步依赖,启动后,会自动往ioc容器中注入DispatcherServlet对象。

二、详解。

        启动类,实际上也是一个配置类,@SpringBootApplication注解实际也是一个组合注解:

        @EnableAutoConfiguration开启自动配置,其又组合了注解@Import,导入了AutoConfigurationImportSelector类,这个类为ImportSelector接口的实现类,内部重写了selectImports方法,在此方法内部,通过层级调用,读取底层的配置文件:

        读取的配置文件org.springframework.boot.autoconfigure.AutoConfiguration.imports

        在此配置文件内存在一些内部的全类名信息,均为自动配置类,其中存在一个类:

org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration

        其功能是完成DispatcherServletAutoConfiguration Bean对象的自动注入,并且其提供的注解标识当前类为自动配置类,@ConditionalOnClass({DispatcherServlet.class})设置了Bean注册的条件,若存在DispatcherServlet类则生效,否则自动配置类不生效。

        若想让DispatcherServlet类存在,就需要引入Web的起步依赖即可,这就与我们最上面提到的"当程序引入spring-boot-starter-web起步依赖,启动后,会自动往ioc容器中注入DispatcherServlet"保持一致。

        此过程最重要的核心存在于org.springframework.boot.autoconfigure.AutoConfiguration.imports配置文件。

在Spring Boot2,7版本以前使用的配置文件为spring.factories,2.7到3.0时期二者都兼容,3.0后则完全使用了org.springframework.boot.autoconfigure.AutoConfiguration.imports配置文件。

        在Bean管理中的案例也可以使用此方式进行自动配置,就不需要手动注册,会进行自动配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值