SpringBoot面试

1.对SpringBoot的理解?

SpringBoot主要用来简化使用Spring的难度和繁重的XML配置,它是Spring组件的一站式解决方案,采取了约定优于配置的方法。通过.properties或者.yml文件替代了Spring繁杂的XML配置文件,同时支持@ImportResource注解加载XML配置。Spring Boot还提供了嵌入式HTTP服务器、命令行接口工具、多种插件等等,使得应用程序的测试和开发简单起来

2.SpringBoot的优点

  • 为基于Spring的开发提供更快的入门体验

  • 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求

  • 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等

  • SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式

3.SpringBoot的核心注解是哪一个,由哪些注解组成

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解

  • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能
  • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能
  • @ComponentScan:Spring组件扫描

4.SpringBoot 的核心配置文件有哪几个?它们的区别是什么?

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。

  • application 配置文件主要用于 Spring Boot 项目的自动化配置。
  • bootstrap 配置文件有三个应用场景。
    • 使用Spring Cloud Config配置中心时,需要在 bootstrap 配置文件中添加连接到配置中心的配置属性,来加载外部配置中心的配置信息
    • 一些固定的不能被覆盖的属性
    • 一些加密或解密的场景

5.SpringBoot的配置文件有哪几种格式?它们有什么区别?

主要有.properties 和 .yml格式,它们的区别主要是书写格式不同。另外,.yml 格式不支持 @PropertySource 注解导入配置

6.SpringBoot有哪几种读取配置的方式

  • 使用@Value注解加载单个属性值
  • 使用@ConfigurationProperties注解可以加载一组属性的值,针对于要加载的属性过多的情况,比@Value注解更加简洁

7.SpringBoot的四大核心组件

  • SpringBoot Starter

    • Starter 帮我们封装好了所有需要的依赖,避免我们自己添加导致的一些Jar包冲突或者缺少包的情况

    • Starter帮我们自动注入了需要的Bean实例到Spring 容器中,不需要我们手动配置(这个可以说是starter干的,实际上并不是,这里埋个坑,下面解答)

      所以: starter包的内容就是pom文件,就是一个依赖传递包

  • SpringBoot Autoconfigure

    • autoconfigure内容是配置Bean实例到Spring容器的实际代码实现包,然后提供给starter依赖。所以说1.2.3中的b项所说的配置Bean实例到Spring容器中实际是autoconfigure做的,因为是starter依赖它,所以也可以说是starter干的。

      所以:Autocinfigure是starter体现出来的能力的代码实现

  • SpringBoot CLI

    • 是 Spring Boot 命令行工具。在 Spring Boot CLI 可以跑 Groovy 脚本,通过简单的 Java 语法就可以快速而又简单的学习 Spring Boot 原型:
  • SpringBoot Actuator

    • Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等

8.SpringBoot 自动配置原理是什么

@EnableAutoConfiguration注解、 @Configuration注解和 @ConditionalOnClass注解组成了Spring Boot自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置。具体是通过maven读取每个starter中的spring.factories文件,该文件配置了所有需要被创建在spring容器中的bean

9.如何使用 SpringBoot 实现异常处理

使用@ControllerAdvice和@ExceptionHandler注解

@ControllerAdvice
public class LocalExceptionHandler {
 
	@ExceptionHandler(ResultException.class)
	@ResponseBody
	public Result handleResultException(ResultException e) {
		return Result.exception("500", "操作异常", e.getMessage());
	}
	
	@ExceptionHandler(MaxUploadSizeExceededException.class)
	public ModelAndView handleResultException(MaxUploadSizeExceededException e) {
		PageData.entityToMap(Result.exception("403", "上传文件过大"));
		return new ModelAndView("", PageData.getMap());
	}
 
	
	@ExceptionHandler(Exception.class)
	@ResponseBody
	public Result handleResultException(Exception e) {
		return Result.exception("500", "操作异常", e.getMessage());
	}
 
}

10.什么是 JavaConfig

JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法,有助于避免使用 XML 配置

11.什么是 Spring Profiles

Spring Profiles 允许用户根据配置文件(dev,prod,test等等)来注册 bean。当应用程序在开发环境中运行时,只有某些 bean 可以加载,而在生产环境中,某些其他 bean 也可以加载。比如要求 Swagger 文档仅适用于测试环境,并且禁用所有其他文档,可以使用配置文件来完成

12.如何实现 SpringBoot 应用程序的安全性

为了实现 Spring Boot 的安全性,可以使用 spring-boot-starter-security 依赖,添加安全配置和重写WebSecurityConfigurerAdapter 配置类的方法,也可以使用shiro

13.SpringBoot如何解决跨域问题

可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值