SpringBoot

1.Spring 的缺点

Spring 确实提高了开发人员的开发效率,但使用 Spring 时,往往需要进行大量的配置。例如:

  • 开启 SpringMVC、事务管理时,需要进行显示配置

  • 集成 Mybatis 等第三方技术时也需要进行显示配置

而这会占用我们大部分的时间和精力。

2.为什么要有 SpringBoot

Spring Boot 的主要目的在于减少配置文件来简化 Spring 开发,

3.Spring Boot 的主要优点

  • 简化配置:SpringBoot 采用约定大于配置的方式,很多地方采用了默认配置,从而使开发人员不必手动进行繁琐的配置。

  • 微服务:Spring Boot 特别适用于微服务架构的开发。它提供了用于构建和部署微服务的工具和库,例如Spring Cloud,这些工具和库使得开发人员可以轻松地构建和管理分布式系统。

  • 内置服务器:Spring Boot 内置了 Web 服务器,如 Tomcat 和 Jetty,避免了手动安装和配置服务器的麻烦。

  • 社区活跃:Spring Boot 拥有庞大的用户群体和开发者社区,开发人员遇到问题时可以从社区获得帮助。

4.什么是 Spring Boot Starters?

Spring Boot Starters 是一系列依赖关系的集合,因为它的存在,项目中依赖之间的关系对我们来说变的更加简单了。

5.Spring Boot 支持哪些内嵌 Servlet 容器?

SpringBoot_第1张图片

6.如何在 Spring Boot 应用程序中使用 Jetty 而不是 Tomcat?

Spring Boot 使用 Tomcat 作为默认的 Web 服务器,如果想使用 Jetty,直接在 pom.xml 文件中排除 Tomcat 依赖,添加 Jetty 依赖即可。

 
 
    org.springframework.boot 
    spring-boot-starter-web 
     
         
            org.springframework.boot 
            spring-boot-starter-tomcat 
         
     
 

 
 
    org.springframework.boot 
    spring-boot-starter-jetty 

7.介绍一下 @SpringBootApplication 注解

@SpringBootApplication 可以看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。其中:

  • @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制

  • @ComponentScan:扫描被 @Component 等注解标注的 bean,注解默认会扫描该类所在的包下所有的类。

  • @Configuration:允许在上下文中注册额外的 bean 或导入其他配置类。

8.Spring Boot 的自动配置是如何实现的?

9.Spring Boot 常用的两种配置文件

Spring Boot 常用的二种配置文件分别是 application.yml、application.properties。相比于 properties 配置的方式,YAML 配置的方式更加直观清晰,简介明了,有层次感,所以最常用的是 application.yml。

10.Spring Boot 常用的读取配置文件的方式有哪些?

  • 通过 @value 读取比较简单的配置信息

  • 通过 @ConfigurationProperties 读取并与 bean 绑定:在读取配置文件的类上加 @Component 注解,我们可以像使用普通 bean 一样将其注入到类中使用。

  • 通过@ConfigurationProperties读取并校验:在读取配置文件的类不加 @Component 注解。我们在我们要使用 读取配置文件的类 的地方使用 @EnableConfigurationProperties 注册我们的配置 bean。

  • @PropertySource 读取指定的 properties 文件:这种方式不支持读取 yml 格式的配置文件。

11.Spring Boot 加载配置文件的优先级了解么?

不同类型的优先级:

application.properties > application.yml > application.yaml

不同位置处的优先级:

SpringBoot_第2张图片

12.常用的 Bean 映射工具有哪些?

我们经常在代码中会对一个数据结构封装成DO、SDO、DTO、VO等,而这些Bean中的大部分属性都是一样的,所以使用属性拷贝类工具可以帮助我们节省大量的 set 和 get 操作。

常用的 Bean 映射工具有:Spring BeanUtils、Apache BeanUtils、MapStruct、ModelMapper、Dozer、Orika、JMapper。

由于 Apache BeanUtils 、Dozer 、ModelMapper 性能太差,所以不建议使用。MapStruct 性能更好而且使用起来比较灵活,是一个比较不错的选择。

13.Spring Boot 如何监控系统实际运行状况?

我们可以使用 Spring Boot Actuator 来对 Spring Boot 项目进行简单的监控。

集成了这个模块之后,你的 Spring Boot 应用程序就自带了一些开箱即用的获取程序运行时的内部状态信息的 API。

通过 GET 方法访问 /health 接口,你就可以获取应用程序的健康指标。

14.Spring Boot 如何做请求参数校验?

  • 在实体类的属性上添加校验规则

  • 如果是校验请求体的参数,则在请求体参数前面加上 @Valid 注解;如果是校验请求参数,则直接在实体类上方添加 @Validated。

15.如何使用 Spring Boot 实现全局异常处理?

可以使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常,详见 SpringMVC 统一异常处理那块。

16.Spring Boot 中如何实现定时任务?

  • 首先通过 @Scheduled 注解创建一个定时任务

  • 然后在 SpringBoot 的启动类上加上@EnableScheduling 注解

@EnableScheduling 注解的作用是发现注解 @Scheduled 的任务并在后台执行该任务。

SpringBoot_第3张图片

你可能感兴趣的:(#,Java面试八股文,spring,boot,java,数据库)