更新时间:2020-11-06 15:31:41 来源:极悦 浏览2014次
springboot框架是为了能够帮助spring开发者快速高效的构建一个基于spring框架及spring生态体系的应用的解决方案,它是对“约定优于配置”这个理念下的一个最佳实现方案,因此它是一个服务于框架的框架,服务的范围是简化配置文件。
约定优于配置指的是什么?
(1),maven目录:默认打包方式为jar,默认新建好了resources资源文件夹
(2),spring-boot-web-start:包含了webmvc相关的依赖以及内嵌了tomcat容器,使得构建一个web应用更加简单
(3),默认提供了application.properties/yml文件
(4),默认通过spring.profiles.active属性来决定运行环境时读取的配置文件
(5),EnableAutoConfiguration默认对于依赖的start进行自动装配
SpringBootApplication由哪几个注解组成,这几个注解分别表示什么作用?
(1),Configuration:将一个类申明为一个IoC容器配置类,该类中任何标注了 Bean的方法,它的返回值都会作为Bean定义注册到Spring容器中,方法名默认称为这个Bean的id
(2),ComPonentScan:默认扫描当前包下的被 Component、 Repository、 Service、 Controller标识的类到IoC容器中。
(3),EnableAutoConfiguration:帮助springboot将所有符合条件的configuration配置加载到springboot创建的IoC容器中。其实这里借助了spring框架提供的一个工具类:SpringFactoriesLoader的支持,以及用到了spring提供的条件注解Conditional
分析:我们发现它有一个Import注解,那么这个注解是干嘛的呢?
第一:基于普通的Bean或者带有Configuration注解的Bean进行注入
第二:实现ImportSelector接口进行动态注入
第三:实现ImportBeanDefinitionRegistrar接口进行动态注入
springboot自动装配的实现原理
我理解的自动装配是:其实EnableAutoConfiguration上有个Import注解,这个注解里面包含了一个实现了ImportSelector的类,在它里面的selectImports方法可以选择注入需要的Bean,
分析塔源码可以看到,
第一步:扫描META-INF/spring-autoconfigure-metadata.properties文件,它里面定义了很多的Conditional条件,例如ConditionalOnClass
第二部:扫描META-INF/spring.factories,结合前面扫描到的进行过滤,原因是很多 Configuration其实是依托于其它的框架来加载的,如果当前classpath下没有相关的依赖,则意味着这些类没必要加载,所以通过这种条件过滤可以有效的减少 Configuration类的数量从而降低启动时间。
springboot中的spi机制的原理
很多开源框架库里都直接或间接使用了Java的SPI机制。比如Spring就有类似的SPI机制,通过SpringFactoriesLoader代替JDK中ServiceLoader,通过META-INF/spring.factories文件代替META-INF/service目录下的描述文件,具体实现步骤不同,但原理都是使用Java的反射机制。META-INF/spring.factories文件,根据key来加载对应的类到springIoC容器中。
极悦注册的SpringBoot学习教程,实现原理剖析SpringBoot可以根据定义在classpath下的类,自动的给你生成一些Bean,并加载到Spring的 Context中,自动配置充分的利用了Spring 4.0的条件化配置特性,能够自动配置特定的Spring bean,用来启动某项特性;有了SpringBoot的自动化配置,我们可以灵活的自定义我们自己的自动配置,当应用需要该功能时,只需要简单的依赖该jar包即可,同时Spring Boot为我们提供的条件注解,同样的代码可以灵活适应各种环境,让我们跟着极悦的cat老师学习一下吧:
课程学习目录
1.架构师教程-Spring中的 Import注解是什么
2.架构师教程-Spring中的 Conditional注解是什么
3.架构师教程-SpringBoot是如何实现自动装配的
4.架构师教程-如何自己实现一个spring-boot-starter(上)
5.架构师教程-如何自己实现一个spring-boot-starter(中)
6.架构师教程-如何自己实现一个spring-boot-starter(下)
7.架构师教程-SpringBoot自动装配实现流程总结梳理
以上就是极悦java培训机构的小编针对“Java架构师视频教程,Springboot框架学习”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习