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由哪几个注解组成,这几个注解分别表示什么作用

SpringBootApplication 本质上是由 3 个注解组成,分别是

@Configuration
@EnableAutoConfiguration
@ComponentScan
@Configuration:
在启动类里面标注了@Configuration,意味着它其实也是一个 IoC
容器的配置类

@EnableAutoConfiguration:
springboot 应用把所有符合条件的@Configuration 配置
都加载到当前 SpringBoot 创建并使用的 IoC 容器中。

@ComponentScan:
ComponentScan 默认会扫描当前 package 下的的所有加
了@Component 、@Repository、@Service、@Controller的类到 IoC 容器中;

4.springboot自动装配的实现原理

(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/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。通过这个约定,就不需要把服务放在代码中了,通过模块被装配的时候就可以发现服务类了。

还总结了Java高级架构学习资料分享+架构师成长之路,吐血总结,免费分享。

最新文章

  1. 通过VMware的PowerCLI配置集群内指定主机的vMotion功能
  2. 【挖坑】thusc前一周计划2016.5.30-2016.6.3
  3. IE11 HTML Help ActiveX
  4. vmware linux centos安装
  5. onCreateView中加载大位图
  6. ABAP 单位转换函数
  7. 如何迁移测试的MAGENTO到正式运行的MAGENTO
  8. iOS开发之单例设计模式(完整正确版本)
  9. Xfce 快捷键
  10. 【转】给Winform的button等控件添加快捷键
  11. 使用Markdown在博客里插入代码
  12. HDU 5281 Senior's Gun (贪心)
  13. 原创:Docker在云家政的应用 谢绝复制粘贴内容
  14. oracle中 sql%rowcount 用法
  15. 【转】通过 INotifyPropertyChanged 实现观察者模式
  16. 网易云课堂-spark
  17. WMS和WMTS的区别
  18. [Windows Azure] Create and use a reporting service in Windows Azure SQL Reporting
  19. Matlab scatter 如何显示不同颜色点状
  20. bzoj 4627: [BeiJing2016]回转寿司 -- 权值线段树

热门文章

  1. 算法8-5:Prim算法
  2. shell中#*,##*,#*,##*,% *,%% *的含义及用法
  3. Centos7 部署ftp
  4. Vue-router路由的简单使用
  5. C# 编程--数组
  6. go语言从例子开始之Example15.闭包
  7. 解析mysql慢日志
  8. bootstrap.yml
  9. 解决 'express' 不是内部或外部命令,也不是可运行的程序
  10. 简易的Master-Worker框架