什么是SpringBoot?
用来简化spring应用的初始搭建以及开发过程,使用特定的方式来进行配置(properties
或yml
文件)创建独立的spring引用程序 main方法运行,嵌入的Tomcat 无需部署war文件,简化maven配置,自动配置spring添加对应功能starter自动化配置。
Spring Boot、Spring MVC 和 Spring 有什么区别?
1、SpringSpring最重要的特征是依赖注入。所有 SpringModules
不是依赖注入就是 IOC 控制反转。当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。
2、Spring MVC提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet
,MoudlAndView
和ViewResolver
等一些简单的概念,开发 Web 应用将会变的非常简单。
3、Spring 和 SpringMVC 的问题在于需要配置大量的参数。
4、Spring Boot 通过一个自动配置和启动的项来目解决这个问题。为了更快的构建产品就绪应用程序,Spring Boot 提供了一些非功能性特征。
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
1、@SpringBootConfiguration
:组合了 @Configuration 注解,实现配置文件的功能。
2、@EnableAutoConfiguration
:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能。
3、@ComponentScan
:Spring组件扫描。
什么是 JavaConfig?
1、面向对象的配置
。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。
2、减少或消除 XML 配置
。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将JavaConfig 与 XML 混合匹配是理想的。
3、类型安全和重构友好
。JavaConfig 提供了一种类型安全的方法来配置 Spring容器。由于 Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。
什么是YAML?
YAML是一种人类可读的数据序列化语言。它通常用于配置文件
。
与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置``数据
。
bootstrap.yml和application.yml有什么区别?
1、Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application。
2、application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置
。
3、bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton
。
4、bootstrap 主要用于从额外的资源来加载配置信息
,还可以在本地外部配置文件中解密属性。
5、这两个上下文共用一个环境
,它是任何Spring应用程序的外部属性的来源。
6、bootstrap 里面的属性会优先加载
,它们默认也不能被本地相同配置覆盖。
7、boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载
8、boostrap 里面的属性不能被覆盖
springboot常用的starter有哪些?
1、spring-boot-starter-web
(嵌入tomcat和web开发需要servlet与jsp支持)
2、spring-boot-starter-data-jpa
(数据库支持)
3、spring-boot-starter-data-redis
(redis数据库支持)
4、spring-boot-starter-data-solr
(solr搜索应用框架支持)
5、mybatis-spring-boot-starter
(第三方的mybatis集成starter)
Spring Boot 配置加载顺序?
1、properties文件
2、YAML文件
3、系统环境变量
4、命令行参数
Spring Boot 有哪几种读取配置的方式?
@PropertySource
@Value
@Environment
@ConfigurationPropertie