springboot核⼼原理
1.基于你对springboot的理解描述⼀下什么是springboot衣服颜搭配系表
它是⼀个服务于spring框架的框架,能够简化配置⽂件,快速构建web应⽤,
内置tomcat,⽆需打包部署,直接运⾏。
2.约定优于配置指的是什么?
maven 的⽬录结构
a) 默认有 resources ⽂件夹存放配置⽂件
b) 默认打包⽅式为 jar
spring-boot-starter-web 中默认包含 spring mvc 相关依赖以及内置的 tomcat 容器,使得构建⼀个 web 应⽤更加简单默认提供 application.properties/yml ⽂件
安卓软件开发流程默认通过 spring.profiles.active 属性来决定运⾏环境时读取的配置⽂件
EnableAutoConfiguration 默认对于依赖的 starter 进⾏⾃动
3.@SpringBootApplication由哪⼏个注解组成,这⼏个注解分别表⽰什么作⽤properties是什么文件
SpringBootApplication 本质上是由 3 个注解组成,分别是
@Configuration
@EnableAutoConfiguration
@ComponentScan
@Configuration:
在启动类⾥⾯标注了@Configuration,意味着它其实也是⼀个 IoC
容器的配置类
@EnableAutoConfiguration:
springboot 应⽤把所有符合条件的@Configuration 配置
都加载到当前 SpringBoot 创建并使⽤的 IoC 容器中。
@ComponentScan:
ComponentScan 默认会扫描当前 package 下的的所有加
了@Component 、@Repository、@Service、@Controller的类到 IoC 容器中;
4.springboot⾃动装配的实现原理
image.png
如果是之前的spring中使⽤redis需要在xml定义bean,现在只需要依赖⼀个spring-boot-starter-data-redis
的jar包,jar中定义了RedisConfiguration,当启动的时候spring会⾃动装载RedisConfiguration,那spring是如何知道配置类在哪⾥的呢? RedisConfiguration类的路径放在了classpath*META-INF/spring.factories的⽂件中,spring会加载这个⽂件中配置的configuration
单片机sprintf函数siki视频unity(1)SpringApplication.run(AppConfig.class,args);执⾏流程中有refreshContext(context);这句话.
(2)refreshContext(context);内部会解析我们的配置类上的标签.实现⾃动装配功能的注解@EnableAutoConfiguration
(3)会解析@EnableAutoConfiguration这个注解⾥⾯的@Import引⼊的配置类.AutoConfigurationImportSelector
(4)AutoConfigurationImportSelector这个类中有这个⽅
法.SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());
(5)SpringFactoriesLoader.loadFactoryNames的作⽤就是读取jar包中的/项⽬中的META-INF/spring.factories⽂件.
(6)spring.factories配置了要⾃动装配的Configuration类
5.spring中的spi机制的原理是什么?
SPI的全名为Service Provider Interface,为某个接⼝寻服务实现的机制。
当服务的提供者,提供了服务接⼝的⼀种实现之后,在jar包的META-INF/services/⽬录⾥同时创建⼀个以服务接⼝命名的⽂件。该⽂件⾥就是实现该服务接⼝的具体实现类。⽽当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/⾥的配置⽂件到具体的实现类名,并装载实例化,完成模块的注⼊。通过这个约定,就不需要把服务放在代码中了,通过模块被装配的时候就可以发现服务类了。
在springboot的⾃动装配过程中,最终会加载META-INF/spring.factories⽂件,⽽加载的过程是由SpringFactoriesLoader加载的。从CLASSPATH下的每个Jar包中搜寻所有META-INF/spring.factories配置⽂件,然后将解析properties⽂件,到指定名称的配置后返回。需要注意的是,其实这⾥不仅仅是会去ClassPath路径下查,会扫描所有路径下的Jar包,只不过这个⽂件只会在Classpath下的jar包中。
headers是什么意思英语通过spi技术可以⾃定义starter,在⾃定义的配置⽂件META-INF/spring.factories中加⼊实现类,依赖这个starter的项⽬就会扫描jar包下的配置,到实现类进⾏装载实例化
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论