问候大家。 本文将涵盖有关“ Spring Boot”主题的关键问题。 它面向初学者,并且在准备面试时会很有用。 与其他文章相比,事实证明它非常紧凑。

问题
什么是弹簧靴?Spring Boot是一组在Spring框架中工作并可以简化Spring应用程序配置的预配置模块。
以下是一些主要模块:
- Spring Boot依赖关系。 包含版本依赖性。
- Spring-boot-starter-parent。 父pom.xml
- 春季启动启动器。 初学者的父模块
- Spring-boot-autoconfigure。 包含用于自动调试启动器的模块
- 弹簧启动执行器。 允许您监视应用程序并管理其创建
Spring Boot有什么好处?- 自动配置许多设置以避免样板代码
- 当默认设置不合适时,可让您轻松配置应用程序
- Spring Boot项目可以编译为独立的JAR文件
- 提供一组经过测试可以正确正常运行的依赖项
- 它具有内置的Web容器,可以轻松测试应用程序。
他如何工作? 他如何理解什么以及如何进行配置?它根据类路径中的依赖关系假定您需要的东西。 “配置协议”-它会使用特殊选择的设置自动配置Spring,然后可以覆盖它们。
为此,有几个注释, @ConditionalOnClass
, @ConditionalOnBean
, @ConditionalOnMissingBean
和@ConditionalOnMissingClass
,它们允许您将条件应用于这些类中的@ Configuration类和@ Bean方法。
例如:
仅当类路径中有特定的依赖项时,才会创建Bean。
使用@ConditionalOnClass
,从那里的classpath设置类名。
仅当容器中没有这种类型或名称的bean时才创建bean。
使用@ConditionalOnMissingBean
,设置要检查的bean的名称或类型。
什么会影响Spring Boot的配置?有一个条件注释列表,每个条件注释用于控制Bean的创建。 这是此类注释的列表(实际上还有更多):
如何定义属性? Spring Boot中默认的PropertySource在哪里?Spring Boot使用PropertySource的特殊顺序来允许覆盖属性值。 这是获取应用程序属性的来源顺序:
- 〜/ spring-boot devtools.properties目录中的常规设置
- 来自测试的
@TestPropertySource
批注中的设置 - Attributes @ SpringBootTest#属性
- 命令行参数
- 来自SPRING_APPLICATION_JSON的属性
- 初始化ServletConfig的参数
- 初始化ServletContext的参数
- 来自Java的JNDI属性:comp / env
- Java系统属性(System.getProperties())
- 操作系统变量
- RandomValueProperySource
- 配置文件的属性,例如YAML或应用程序-{profile} .properties
- 不是来自jar的application.properties和yaml
- jar中的application.properties和yaml
- @ Configuration类上的
@PropertySource
- 默认情况下的属性(通过
SpringApplication.setDefaultProperties()
设置)
还可以添加property.yml始终覆盖property.properties。
描述Spring Boot的主要注释和配置?@SpringBootApplication
提供3个属性:
@EnableAutoConfiguration
启用Spring Boot的自动配置机制@ComponentScan
ComponentScan-在组件所在类的包中启用组件扫描@Configuration
允许您注册其他。 上下文中的bean
以下是其他关键注释:
@EnableConfigurationProperties
允许您使用带有@ConfigurationProperties
批注的@ConfigurationProperties
@ConfigurationProperties
允许您将文件与文件箱关联
@WebMvcTest
用于Spring MVC测试
@SpringBootTest
在测试中需要Spring Boot函数时使用
@DataJpaTest
用于测试JPA组件
内联容器和WAR有什么区别?嵌入式容器是最终应用程序随附的服务器,而WAR是可以部署到外部服务器的存档。
Servlet容器非常适合在同一主机上管理多个应用程序,但是对于仅管理一个应用程序而言,它们并不是很有用。
在云环境中,每个虚拟机使用一个应用程序是首选且更常见的方式。 现代框架希望与云更加兼容,因此它们正在切换到嵌入式容器。
Spring支持哪些内置容器?Spring Boot支持Tomcat,Jetty和Undertow。
默认值为TomCat。 为了更改容器,只需在pom.xml中添加所需的依赖项即可。
@EnableAutoConfiguration做什么?它允许您使用自动配置。 Spring Boot中的自动配置试图基于类路径中的依赖关系来创建和配置bean,以允许开发人员快速开始使用各种技术并删除样板代码。
Spring Boot会扫描组件吗? 默认情况下,他在哪里寻找它们?是的,如果存在包含@ComponentScanning
批注的@SpringBootApplication
批注,则可以。
默认情况下,Spring在与带注释的类相同的包中搜索bean。 可以通过在scanBasePackageClasses
或scanBasePackage
指定类(或包)来覆盖scanBasePackage
。
什么是Spring Boot Starter POM? 有什么用?入门人员提供了一组方便的依赖项描述符,您可以将其包含在应用程序中。 您无需搜索和复制粘贴部署描述符,就可以获取有关Spring和相关技术的资料。
例如,如果您想开始使用Spring JPA,只需将spring-boot-starter-data-jpa依赖项添加到您的项目中。
入门程序包含运行项目,快速且一致地工作所需的大多数依赖项,并支持可传递依赖项集。
您可以通过Spring Boot控制日志记录吗?是的 默认情况下,优先级为ERROR,WARN,INFO的消息将显示在应用程序中。 要启用DEBUG或TRACE级别的输出,必须使用--debug
/ --trace
或设置属性属性debug / trace = true。
logging.level.root = WARN logging.level.org.springframework.web = DEBUG logging.level.org.hibernate = ERROR
默认情况下,Sprin Boot仅登录到控制台。 如果要将事件记录到文件中,则必须将logging.file或logging.path属性设置为true(例如,在application.properties中)。
色彩记录
在支持ANSI的控制台中,为了提高可读性,可以使用不同的颜色突出显示不同级别的消息。 这是在属性文件中配置它的方式:
logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}) {yellow}
如果要写入其他文件,还可以配置以下内容(YAML):
logging: path: /var/logs/ file: bookWarn.log level: root: WARN org. springframework: security: DEBUG