SpringBoot

SpringBoot是什么?

springboot是一个微服务的框架,是基于spirng开发的一个javaweb框架,好处是能够简单的利于开发,springboot是被抽象出来开发的框架,目的是为了集成更多的中间件。
springboot框架是一种轻量级的框架,因为各种配置太过于繁琐,所有形成了约定大于配置的说法,这里的java是重javaEE(企业级开发)–>Spring–>springBoot(微服务阶段)的过程。
springboot默认把我们进行了很多的设置,我们只需要写少量的代码。他还继承了非常多的第三方配置(redis,MongoDB,RabbitMQ等等),几乎是可以达到开箱即用
springboot(构建一切)-springcloud(协调一切)-springcluod data flow(链接一切)

Spring Boot 的特点

  1. 独立运行的 Spring 项目
    Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。
  2. 内嵌 Servlet 容器
    Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。
  3. 提供 starter 简化 Maven 配置
    Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。
  4. 提供了大量的自动配置
    Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。
  5. 自带应用监控
    Spring Boot 可以对正在运行的项目提供监控。
  6. 无代码生成和 xml 配置
    Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。

SpringBoot自动装配原理

从@SpringBootApplication点进去,会看到 @EnableAutoConfiguration ,这个注解的作用就是让SpringBoot开启自动配置。
在这里插入图片描述

自动配置的奥秘全都在这里,点进去接着看:
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
在这里插入图片描述
这两个注解十分重要,挨个分析:
(1)@AutoConfigurationPackage 注解,从字面意思上来看就是自动配置包。
点进去可以看到就是⼀个 @Import 注解: @Import(AutoConfigurationPackages.Registrar.class) ,导⼊了⼀个Registrar 的组件,这个注解的作用就是将主配置类(@SpringBootConfiguration标注的类)所在的包及其下面所有子包里面所有的组件扫描到IOC容器中。所以说,默认情况下主配置类所在包及其子包以外的组件,Spring IOC容器是扫描不到的。
从classpath下获取所有META-INF/spring.factories这个文件下的信息。
将上面获取到的信息封装成Enumeration返回
遍历Enumeration,然后获取key为EnableAutoConfiguration下的所有值。
在这里插入图片描述
(2)@Import(AutoConfigurationImportSelector.class)
通过@Import导入了AutoConfigurationImportSelector类,而这个类的selectImports方法会通过SpringFactoriesLoader得到大量的配置类。而每个配置类则根据条件化配置类做出决策,以实现自动配置的功能.
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:位于META_INF目录下的spring.factories,存放相关组件的配置工厂类;@EnableAutoConfiguration核心配置注解,里面有一个AutoConfigurationImportSelector(自动配置文件收集器),收集配置文件中的配置工厂类,然后SpringFactoriesLoader加载组件工厂(抽象工厂模式),进行实例化,在spring上下文中,生成bean。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值