type
status
date
slug
summary
tags
category
icon
password

SpringBoot面试题

SpringBoot约定优于配置如何理解

这是一种软件设计范式,主要是为了减少开发者对于配置项的维护,更多的集中于业务逻辑上
基于传统的Spring框架开发web应用,我们需要做很多和业务开发无关并且只需要做一次的配置。
  1. 管理jar依赖
    1. Spring Boot提供了一系列的Starter依赖,大大简化了项目依赖管理。例如,使用spring-boot-starter-web就可以快速搭建一个Web应用,无需手动添加多个相关依赖。
  1. web.xml的维护
    1. Spring Boot通过自动配置消除了对web.xml的需求。它使用Java配置和条件注解来自动配置Servlet容器,简化了Web应用的设置过程。
  1. 应用部署到Web容器
    1. Spring Boot默认集成了Tomcat作为内嵌的Web服务器。这意味着你可以直接运行一个可执行的JAR文件来启动应用,无需单独部署到外部的Web容器中。
  1. Dispatch-Servlet.xml的配置项维护
    1. Spring Boot自动配置了DispatcherServlet,无需手动维护dispatch-servlet.xml文件。它会根据classpath中的依赖自动配置Spring MVC的各个组件。
  1. 第三方组件集成到Spring IOC容器中的配置项维护
    1. Spring Boot的自动配置机制能够自动检测classpath中的第三方库,并自动将其集成到Spring的IOC容器中。这大大减少了手动配置的工作量,例如自动配置数据源、JPA实体管理器等。

Spring Boot 中自动装配机制的原理

自动将第三方组件的Bean加载到Spring IOC容器中,在SpringBoot中只需要在启动类上加上@SpringBootApplication注解即可实现,@SpringBootApplication 是一个复合注解,真正实现自动装配的注解是 @EnableAutoConfiguration。
  1. 引入Starter启动依赖组件时,这个组件必须包含@Configuration配置类,在这个配置类里通过@Bean注解声明需要装配到IOC容器的Bean对象
  1. 在Spring-Boot-autoConfigure jar包中的META-INF/Spring.factories,列出了所有需要自动装配的类,当应用启动时,Spring Boot会读取这个文件,并加载相应的自动配置类
  1. 自动配置类通常使用@ConditionalOnClass、@ConditionalOnMissingBean等条件注解,根据classpath中是否存在特定的类或Bean来决定是否应用某个配置
  1. Spring Boot还提供了@ConfigurationProperties注解,允许将配置文件中的属性绑定到Java对象上,简化了配置的管理和使用

SpringBoot的优点

  • 快速开发
    • SpringBoot通过自动配置和约定优于配置的原则,大大减少了开发时间。开发者可以专注于业务逻辑,而不是繁琐的配置工作。例如,使用@SpringBootApplication注解就可以自动配置Spring应用上下文,简化了传统Spring应用的复杂配置过程。
  • 独立运行
    • SpringBoot应用可以作为独立的JAR文件运行,因为它内嵌了Servlet容器(如Tomcat、Jetty)。这意味着不需要部署WAR文件到外部的web服务器,大大简化了部署过程,特别适合微服务架构和容器化部署。
  • 简化配置
    • SpringBoot推崇使用Java配置和注解,减少了XML配置的需求。例如,@EnableAutoConfiguration注解可以根据类路径中的jar依赖自动配置Spring应用。此外,application.properties或application.yml文件提供了一种集中管理配置的方式,使得配置更加清晰和易于维护。
  • 自动管理依赖
    • SpringBoot提供了一系列的"starter"依赖,这些starter pom简化了Maven配置。例如,spring-boot-starter-web包含了构建RESTful应用所需的所有依赖,包括Spring MVC、Jackson、Tomcat等。这不仅简化了依赖管理,还确保了依赖版本的兼容性。
  • 集成测试支持
    • SpringBoot提供了一系列工具和注解来简化单元和集成测试。@SpringBootTest注解可以自动配置Spring应用上下文,使得集成测试变得更加容易。此外,MockMvc等工具可以模拟HTTP请求和响应,便于进行控制器层的测试。
  • 监控管理
    • SpringBoot Actuator提供了生产级别的特性,如健康检查、审计、指标收集和HTTP追踪等。这些特性可以帮助你监控和管理你的应用。例如,/health端点可以提供应用的健康信息,/metrics端点可以提供各种指标数据。
  • 与云平台天然集成
    • SpringBoot的设计理念与云原生应用的要求非常契合。它可以轻松部署到各种云平台,如AWS、Google Cloud或Azure。此外,SpringBoot还与Spring Cloud紧密集成,提供了一套完整的微服务解决方案,包括服务发现、配置管理、断路器等功能。

如何在SpringBoot启动时运行一些特定的代码

通过实现CommandLineRunner接口
通过实现applicationRunner接口

SpringBoot读取配置文件

  • 通过@Value(${property}),读取application.yml
  • @ConfigurationProperties(prefix=””),需搭配@Component对Bean字段进行绑定,如果没有@Component需配合@EnableConfigurationProperties(配置类.class)手动启用配置类
  • @PropertySource(”classpath:配置文件名”)
 
 
Java并发编程面试题SpringCloud面试题
Loading...
JackJame
JackJame
一个苦逼的码农😘
最新发布
Redis面试题
2025-3-3
面试题总结
2025-2-22
SpringBoot面试题
2025-2-18
JVM面试题
2025-2-18
数据库面试题
2025-2-16
Java并发编程面试题
2025-2-13
公告