Spring Boot 面试题

什么是SpringBoot?

SpringBoot是一个全新的Spring框架,其设计目的就是用来简化新Spirng应用的初始化搭建以及开发过程。该框架使用了特定的方式来进行配置,从而是程序员不再需要定义样板华的配置。

优点:

  1. 约定大于配置
  2. 创建独立的Spring应用程序
  3. 开发简单,集中式管理
  4. 基本不会重复
  5. 功能都在本地,没有分布式的管理和调用消耗
  6. 内嵌服务器,不用部署WAR文件
  7. 允许通过Maven来根据需要获取starter
  8. 完全没有代码生成,对XML没有要求配置
  9. 尽可能的使用自动配置Spring

缺点:

  1. 效率低:开发都在同一个项目改代码,相互等待,冲突不断
  2. 维护难:代码功能耦合在同一个项目
  3. 不灵活
  4. 稳定性差

理解: 1.约定大于配置
            2.Spring Boot 不是对 Spring 功能上的增强,而是提供了一个快速使用Spring 的方式
            3.开箱即用,没有代码的生成,也无需XML配置,提供大项目中常见的非功能特性。

特点: 1)为基于Spring的开发提供更快的入门体验;
           2)开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求;
            3)提供了一些大型项目常见的非功能性特性,如嵌入式服务器、安全、指标、健康检测、外部配置等;
            4)SpringBoot 不是对 Spring 功能上的增强,而是提供了一种快速使用的 Spring 的方式

SpringBoot的核心功能:
  1. 起步依赖(简化依赖配置)
    起步依赖本质上是一个Maven项目对象模型(Project Object Model, POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。
  2. 自动配置(简化常用工程相关配置)
    SpringBoot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不应该用哪个。该过程是Spring自动完成的。
  3. 辅助功能(内置服务器,.......)
    SpringBoot程序还有其他的一些优势,比如没有配置Tomcat服务器,但是能正常运行,这是SpringBoot入门程序中一个可以感知到的功能,也是SpringBoot对的辅助功能之一。

什么是starter?

        SpringBoot为了简化配置,提供了很多的starter,starter是SpringBoot事先打包好常用模块的jar包,并完成自动装配,就是叫starter。使用starter可以帮助开发者减少依赖配置。

starter和parent的区别?

        都是帮助我们简化配置。
        starter是一个坐标中定了若干个坐标,以前要写多个,现在只要写一个,是用来减少依赖配置的书写量。
        parent是定义了几百个依赖版本号,以前是要自己手工控制版本,现在由SpringBoot统一管理,这样就不会产生冲突了,是用来减少依赖冲突的。

@SpringBootApplication应用程序启动类的作用?

        @SpringBootApplication注解是一个复合注解,它结合多个其他Spring框架中的注解,以简化SpringBoot应用的配置,这个注解主要是用于SpringBoot应用的主类上,以快速启动并配置应用。
  @SpringBootApplication是@SpringBootConfiguration、@EnableAutoConfiguation和@ComponentScan这三个注解的组合体。
        @SpringBootConfiguration:和@Configration注解一样,是用来声明这是一个配置类。
        @ComponentScan:组件扫描,默认扫描当前引导类所在包和子包。
        @EnableAutoConfiguration:SpringBoot实现自动化配置的核心注解。
        @SpringBootApplication则是用于从main方法启动Spring应用的类,它会执行以下步骤:

  1. 推断应用的类型是普通项目还是Web项目
  2. 查找并加载所有可用初始化器,设置到initalizers属性中
  3. 找出所有的应用程序监听器,设置listener属性中
  4. 推断并设置main方法的定义类,找到运行的主类

SpringBoot 有那些核心注解?

核心注解:@SpringApplication

自动配置注解:@EnableAutoConfiguration、@Configuration

组件扫描和注解注入:@CompnentScan、@Compnent、@Controller、@Service、@Repository、@RestController

数据绑定和验证注解:@RequestMapping、@GetMapping、@PostMapping、@ResponesBody、@RequestBody

自动装配(根据类型,根据名称):@AutoWired、@QualiFier、@Resource

SpringBoot配置文件类型有几种?区别是什么?

        properties和yml和yaml
        区别:主要是properties和yml书写方式不一样,yml和yaml是一样的格式,所以一般使用的是yml,yml数据表达更直观,但是properties优先级大于yml

过滤器和拦截器的区别?

        过滤器是依赖于Servlet容器,拦截器是依赖于Spring

  1. 触发时机不同,过滤器是请求加入容器之后,进入Servlet之前进行预处理。
  2. 过滤器可以修改request,拦截器不行
  3. 拦截器可以调用IOC容器里的各种依赖,过滤器不行
  4. 过滤器只在请求前后执行,拦截器详细于所有方法。
  5. 过滤器是基于函数回调,而拦截器是基于java反射。
  6. 拦截器可以访问处理方法的上下文,而过滤器不行
  7. 过滤器可以对所有的请求起作用,而拦截器只能对Spring请求起作用

SpringBoot拦截器的创建?
  1. 创建拦截器类并实现HandlerInterceptor接口
  2. 再进行配置

SpringBoot过滤器的注册方式?

        有两种注册方式。

        第一种是利用Servlet3.0的@WebFilter注解配置:@WebFilter是Servlet3.0新增加的注解,当项目启动时,会自动扫描自动注册。
     但是这个注解并不是由SpringBoot提供的,所以我们得在配置类还得加一个注解:@ServletComponetScan,指定扫描的Filter包。
       第二种是利用SpringBoot配置类来添加过滤器:把Filter类写好了,不需要加@WebFilter注解,使用SpringBoot提供的FilterRegistrationBean来对Filter进行配置。

SpringBoot的如何定义全局异常处理器?
  1. 定义全局异常处理器类
  2. 在此类上添加@ControllerAdvice注解
  3. 根据异常类型来指定响应的处理器方法
  4. 在方法上通过异常类型来执行执行的处理器方法@ExceptionHandler
  5. 根据不同的异常类型做出处理器相应的响应信息

当然,我可以为您介绍一些常见的Spring Boot面试题。以下是一些常见的问题和答案: 1. 什么是Spring BootSpring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它简化了Spring应用程序的配置和部署过程,并提供了一套开箱即用的功能,如自动配置、嵌入式服务器等。 2. Spring Boot的主要特点有哪些? - 简化配置:Spring Boot通过自动配置和约定大于配置的原则,减少了繁琐的配置。 - 内嵌服务器:Spring Boot可以使用内嵌的Tomcat、Jetty或Undertow服务器,无需外部容器。 - 自动配置:Spring Boot根据项目的依赖自动配置应用程序。 - 简化依赖管理:Spring Boot使用起步依赖(Starter)来管理依赖关系,简化了依赖管理。 - Actuator:Spring Boot提供了Actuator模块,可以监控和管理应用程序。 3. Spring Boot如何实现自动配置? Spring Boot通过条件注解和自动配置类实现自动配置。条件注解根据条件判断是否需要进行自动配置,自动配置类提供了默认的配置。 4. 如何在Spring Boot配置数据源? 在Spring Boot,可以通过在application.properties或application.yml文件配置数据源相关属性来配置数据源。例如,可以配置数据库的URL、用户名、密码等。 5. 如何启用Spring Boot的日志输出? Spring Boot使用了Commons Logging作为日志抽象层,默认使用Logback作为日志实现。可以通过在application.properties或application.yml文件配置相关属性来控制日志输出。 6. 如何在Spring Boot实现跨域请求? 可以通过在控制器类或方法上添加@CrossOrigin注解来实现跨域请求。也可以通过配置WebMvcConfigurer来全局配置跨域请求。 7. 如何在Spring Boot实现缓存? Spring Boot提供了对多种缓存技术的支持,如Ehcache、Redis等。可以通过在pom.xml文件添加相应的依赖,并在配置文件配置相关属性来启用缓存。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值