准备春季专业认证。 春季靴

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


目录
  1. 依赖注入,容器,IoC,bean
  2. AOP(面向方面​​的编程)
  3. JDBC,事务,JPA,Spring数据
  4. 春季靴
  5. 春季MVC
  6. 春季安全
  7. 休息
  8. 测试中




问题


什么是弹簧靴?

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的创建。 这是此类注释的列表(实际上还有更多):


注解
通过条件
@ConditionalOnClass
类路径中的类存在
@ConditionalOnMissingClass
classpath中缺少课程
@ConditionalOnBean
bin的存在或其类型(bean类)
@ConditionalOnMissingBean
缺少垃圾箱或其类型
@ConditionalOnProperty
春季物业的存在
@ConditionalOnResource
资源文件的存在
@ConditionalOnWebApplication
如果这是一个Web应用程序,则将使用WebApplicationContext。
@ConditionalOnNotWebApplication
如果不是Web应用程序

如何定义属性? Spring Boot中默认的PropertySource在哪里?

Spring Boot使用PropertySource的特殊顺序来允许覆盖属性值。 这是获取应用程序属性的来源顺序:


  1. 〜/ spring-boot devtools.properties目录中的常规设置
  2. 来自测试的@TestPropertySource批注中的设置
  3. Attributes @ SpringBootTest#属性
  4. 命令行参数
  5. 来自SPRING_APPLICATION_JSON的属性
  6. 初始化ServletConfig的参数
  7. 初始化ServletContext的参数
  8. 来自Java的JNDI属性:comp / env
  9. Java系统属性(System.getProperties())
  10. 操作系统变量
  11. RandomValueProperySource
  12. 配置文件的属性,例如YAML或应用程序-{profile} .properties
  13. 不是来自jar的application.properties和yaml
  14. jar中的application.properties和yaml
  15. @ Configuration类上的@PropertySource
  16. 默认情况下的属性(通过SpringApplication.setDefaultProperties()设置)

还可以添加property.yml始终覆盖property.properties。


描述Spring Boot的主要注释和配置?

@SpringBootApplication提供3个属性:


  • @EnableAutoConfiguration启用S​​pring 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。 可以通过在scanBasePackageClassesscanBasePackage指定类(或包)来覆盖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 

Source: https://habr.com/ru/post/zh-CN471312/


All Articles