对springboot的源码,及spring的spi机制原理的理解

1.基于你对springboot的理解,描述一下什么是springboot
springboot是一个能帮助开发者快速搭建spring框架应用 项目的一个子框架,其实就是帮开发者把配置spring的一系列的配置文件中要手工做的事情通过一个注解就自动帮我们集成到了项目中如有内置tomcat,大大节省了开发时间及效率。

2.约定优于配置指的是什么?
因为springboot是通过注解自动帮我们加载一系列的需要用的过包和内置tomcat,即便帮我们全部加载了,那就是有些东西帮我们用的是默认的值,如tomcat端口是8080,那如果想要用一个如9090的端口怎么办呢, 这时候springboot就提供了一些约定,在resources中存放配置文件,可以通过 一个 application.proterties(application.yml)这个文件来修改tomcat的端口及其他的一些配置信息,还有EnableAutoConfiguration 对于依赖的自动加载、默认的打包方式 是jar方式。


3.@SpringBootApplication由哪几个注解组成,这几个注解分别表示什么作用
A.@springBootConfiguration 实际 上是下面这样的一个关系 :

@SpringBootConfiguration <----->@Configuration  <-------->@component
@Configuration:告诉spring这是一个配置类  配置类的作用与配置文件一样
@Component   : 标记了这个注解的类都注册 到IOC容器中

B.@EnableAutoConfiguration
在启动时,@EnableAutoConfiguration通过@Import({AutoConfigurationImportSelector.class})  来动态加载bean,它是通过spring的一个工具类SpringFactoriesLoader根据 spring.Factories配置文件中的key 来加载对应的类,但是这样加载到的类也包括了所有其他的框架依赖,如果当前的classpath环境下没有相关联的依赖,则意味着这些类不需要加载,所以通过元数据进去过滤,这样可以减少@configuration类的数量而降低springboot的启动时间。

C.@ComponetScan
Springboot的启动类在项目的根目录下,ComponentScan默认会扫描当前项目下的所有的package下的所有加了相关注解标识(@Component、@Repository、@Service、@Controller、@Bean、@Configuration
)的类到IoC容器中

4.springboot自动装配的实现原理
通过@Import({AutoConfigurationImportSelector.class})  来动态加载bean,它是通过spring的一个工具类SpringFactoriesLoader根据 spring.Factories配置文件中的key 来加载对应的类,但是这样加载到的类也包括了所有其他的框架依赖,如果当前的classpath环境下没有相关联的依赖,则意味着这些类不需要加载,所以通过元数据进去过滤,这样可以减少@configuration类的数量而降低springboot的启动时间。

5.spring中的spi机制的原理是什么?
Spi是为某个接口寻找服务实现的机制,当服务的提供者提供接口的实现类后,在相对应的meta-inf文件中创建一个以服务接口全名的文件,这个文件中配置的就是具体的实现类,当外部程序调用这个模块时,就能通过这个meta-inf下的配置文件找到具体的实现类,并加载实例化,完成模块注入。通过这个约定,就不需要把服务放在代码中,模块被装载时就能找到服务类了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值