初识SpringBoot

SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 。

创建的包一定要在项目主程序入口的同级目录下,负责会识别不到

更改启动时显示的字符拼成的字母

关于漫画的ascii艺术字,自定义Spring Boot 漫画 banner下载,各种有意思的banner、ascii图案,还有中文文字banner,作为Spring Boot和终端命令行banner会让项目更有意思。-bootschool.net

原理初探:

自动装配:

pom.xml

 spring-boot-dependencies: 核心依赖在父工程中

我们在写或者引入一些SpringBoot依赖的时候,不需要指定版本,就因为有这些版本仓库

启动器:

比如  spring-boot-starter-web,他就会帮我们自动导入web项目所有的依赖

springboot会将所有的功能场景都变成一个个的启动器

我们要使用什么功能,就只需要找到对应的启动器就可以了,也就是一个个的starter

这个链接就是关于springboot的所有启动器

Developing with Spring Boot

主程序

//标注这个类是一个springboot的应用
@SpringBootApplication
public class BootApplication {

    public static void main(String[] args) {
        //将springboot应用启动
        SpringApplication.run(BootApplication.class, args);
    }

}

注解:

@SpringBootConfiguration     springboot的配置   启动类下的所有资源被导入
       @Configuration        spring配置类
             @Component      说明这也是一个spring的组件
  
@EnableAutoConfiguration       自动配置
       @AutoConfigurationPackage   自动配置包
           @Import({AutoConfigurationPackages.Registrar.class})  自动配置包"扫描包"       
       @Import({AutoConfigurationImportSelector.class})   自动配置导入选择
//获取所有的配置
List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);  

获取候选的配置

    protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
        List<String> configurations = ImportCandidates.load(AutoConfiguration.class, this.getBeanClassLoader()).getCandidates();
        Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you are using a custom packaging, make sure that file is correct.");
        return configurations;
    }

AutoConfigurationImportSelector

自动配置的核心配置文件

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. 

核心注解  :@ConditionalOnxxxxxx

如果条件都满足则生效

例如mvc,  我们导入了webmvc的包则全部满足,就会生效

总结: SpringBoot所有自动配置都是在启动的时候扫描并加载

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. 

所有的自动配置类都在这里面,,但是不一定都生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了,有个启动器,我们的自动装配就会生效,然后就配置成功了

SpringBoot加载流程记忆版

  • 程序main方法执行开始加载@SpringBootApplication注解

  • 程序加载找到@EnableAutoConfiguration注解

    • 自动开启包扫描@AutoConfigurationPackage(加载自己的配置项)

      • AutoConfigurationPackages.Registrar.class 读取主启动类所在的包路径,则包扫描开始.创建/读取/主启动类的子孙包中的信息.

    • 自动导入其他组件

      • AutoConfigurationImportSelector.class在 springboot-autoConfigure中读取自动配置项 142项. 根据用户自己依赖的jar包文件 开始加载组件.

      • 如果加载组件的过程中 发现配置文件与需要的名称一致,则动态为配置项的配置文件的属性赋值 实现参数的动态修改.

  • 如果程序运行没有错 则SpringBoot程序启动成功.

  • 33
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值