SpringBoot01-大白话刨析SpringBoot

本文介绍了SpringBoot,一个以约定优于配置为特点的Java Web开发框架,它简化了HTTP接口开发,内置Tomcat并支持动态端口调整。重点讲解了其自动装配机制,包括@SpringBootApplication注解的作用、@SpringBootApplication的解析过程以及自动配置的原理。

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

什么是SpringBoot?

SpringBoot,就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置, you can "just run",能迅速的开发web应用,几行代码开发一个http接口。

SpringBoot不用配置dispatchservlet,不用配置web.xml,它甚至内置了tomcat(默认启动服务器)

修改端口号,在它的配置文件下修改就可以

 

 

记得Springboot Maven也要解决静态过滤问题

  <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.txt</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

我们之后会发现Springboot整合其他的东西会非常方便,比如swagger,redis等等,是因为在springboot里面它已经帮你配置好了,并且化成了一个注解。

 

SpringBoot自动装配 分析

先点到主启动类

 点击@SpringBootApplication注解

 最重要的两个注解

先看@SpringBootConfiguration一个个点进去

@SpringBootConfiguration  :springboot的配置
   @Configuration     :spring配置类
        @Component    :说明它也是spring的一个组件


@EnableAutoConfiguration    :自动配置
     @AutoConfigurationPackage    :自动配置包
           @Import({Registrar.class}) :注册器
     @Import({AutoConfigurationImportSelector.class})  :选择器  

 

 //获取候选的配置

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
    List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
    Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.");
    return configurations;
}

在这里出现了个文件:META-INF/spring.factories :这就是自动配置的核心

点进去,会发现有很多包, 这些包就是自动装配的时候就帮你配置好了的!

 

我们再回到

 点进去

 

 看到这里是不是发现连起来了?说到底就是通过加载META-INF/spring.factories里面的配置包,然后把加载的包放到配置文件里面去,让springboot去配置文件里面找这些配置

面试官问你你可以这样说,springboot是通过main方法下的SpringApplication.run方法启动的,启动的时候他会调用refshContext方法,先刷新容器,然后根据解析注解或者解析配置文件的形式祖册bean,而它是通过启动类的SpringBootApplication注解进行开始解析的,他会根据EnableAutoConfiguration开启自动化配置,里面有个核心方法ImportSelect选择性的导入,根据loadFanctoryNames根据classpash路径以MATA-INF/spring.factories下面以什么什么EnableAutoConfiguration开头的key去加载里面所有对应的自动化配置,他并不是把这一百二十多个自动化配置全部导入,在他每个自动化配置里面都有条件判断注解,先判断是否引入相互的jar包,再判断容器是否有bean再进行注入到bean容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JagTom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值