又到了
金三银四、金九银十
的时候了,是时候收藏一波面试题了,面试题可以不学,但不能没有!
一个合格的计算机打工人
,收藏夹里必须有一份 SpringBoot 八股文 面试题 ,特别是即将找工作的计算机人,希望本篇博客对你有帮助!
祝各位计算机人都可以在就业季里,顺利通过面试,找到钱多事少离家近
的满意工作
面试题系列
博客导航:
- JavaSE 八股文 面试宝典
- MySQL 八股文 面试宝典
- Spring、MyBatis、SpringMVC 八股文 面试宝典
- SpringBoot框架 八股文 面试宝典
⇦当前位置
未完待续 ...
- 如果有一天你 厌倦上班、厌倦996 ,想要
考研备考
的话:408 全套初复试笔记汇总 传送门
后续随着自己的学习,也会陆续补充新的面试题,如果对大家起到帮助的话,
求赞 、求收藏、求关注!
@RestController
@Service
@Autowired
@Resource
@RequestMapping GetMapping PostMapping
@Import:xml文件中有个import标签引入其他的配置文件, @Import其实是import标签的替代,也可以导入第三方的配置类。而且和@EnableXXX 可以实现功能模块的复用,@Import注解还可以导入具体的类型对象到Spring容器中,
@Indexed:Spring5之后提供的提升@ComponentScan性能的一个主键
@EnableAutoConfiguration
@SpringBootApplication
@SpringBootConfiguration
① 直接通过main方法来运行
② 打成jar 通过java -jar的命令运行或者打成war包,然后把这个war放到Web容器中
③ 使用Maven/Gradle插件来运行
使用spring+springmvc框架进行开发的时候,如果需要引入mybatis框架,那么需要在xml中定义需要的bean对象,这个过程很明
显是很麻烦的,如果需要引入额外的其他组件,那么也需要进行复杂的配置,因此在springboot中引入了starter
starter就是一个jar包,写一个@Configuration的配置类,将这些bean定义在其中,然后再starter包的META-INF/spring.factories
中写入配置类,那么springboot程序在启动的时候就会按照约定来加载该配置类
开发人员只需要将相应的starter包依赖进应用中,进行相关的属性配置,就可以进行代码开发,而不需要单独进行bean对象的配置
spring-boot-starter-web:提供了SpringMVC+内嵌了Tomcat容器;
spring-boot-starter-data-jpa:提供了SpringJPA和Hibernate数据库支持;
spring-boot-starter-data-redis:提供了Redis服务;
mybatis-spring-boot-starter:提供了MyBatis;
spring-boot-starter-data-solr
spring-boot-starter-xxx
在启动SpringBoot项目的main方法的头部有一个@SpringBootApplication注解,在这个注解中组合了一个EnableAutoConfiguration注解,这个注解的作用就是打开自动装配,
而在这个注解中又包含了一个@Import注解,在这个注解中引入了一个实现了 ImportSelector接口的类型,
在对应的selectImports方法中会读取META/INF目录下的spring.factories文件中需要被自动装配的所有的配置类,
然后通过META-INF下面的spring-autoconfigure-metadata.properties文件做条件过滤。
最后返回的就是需要自动装配的相关的对象。
@Import + @Configuration + Spring spi
在Spring Boot里面,可以使用以下几种方式来加载配置。
properties文件;
YAML文件;
3)系统环境变量;
4)命令行参数;
Spring Boot的核心配置文件是 application和bootstrap 配置文件。
- application配置文件这个容易理解,主要用于Spring Boot 项目的自动化配置。
- bootstrap 配置文件有以下几个应用场景。
- ① 使用Spring Cloud Config配置中心时,这时需要在bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
- ② —些固定的不能被覆盖的属性;
- ③ —些加密/解密的场景;
SpringBoot中默认支持的属性文件有下面4种
- application.properties、application.xml、application.yml aplication.yaml
那么为什么还有一类 bootstrap.yml、bootstrap.properties文件 ?
bootstrap.yml在SpringBoot中默认是不支持的,需要在SpringCloud环境下才支持,作用是在SpringBoot项目启动之前启动的一个父容器,该父容器可以在SpringBoot容器启动之前完成一些加载初始化的操作。比如加载配置中心中的信息。
不需要,SpringBoot项目中我们会添加spring-boot-starter-web这个依赖,内置了 Tomcat/Jetty 等容器;
节省了下载安装tomcat,应用也不需要再打war包,然后放到webapp目录下再运行只需要一个安装了 Java 的虚拟机,就可以直接在上面部署应用程序了
springboot已经内置了tomcat.jar,运行main方法时会去启动tomcat,并利用tomcat的spi机制加载springmvc
Spring提供了一种使用
controllerAdvice
处理异常的非常有用的方法。 我们通过实现一个
ControlenAdvice
类,来处理控制器类抛出的所有异常
主要有两种方式:
Spring Loaded
Spring-boot-devtools
对于集成Spring Boot和ActiveMQ,我们只需要添加spring-boot-starter-activemq的依赖,然后在application.properties属性文件中添加ActiveMQ的配置信息即可。
它只需要很少的配置,并且不需要样板代码。
Actuator是SpringBoot中提供的四大神器之一,在单体架构中用到的是非常少的,但是在分布式微服务架构下就非常有用。
1.如果有服务出现了故障,定位服务
2.对整个系统的性能做出监控
3.统一日志管理
Actuator:
health:
info:
Metrics:
logger:
可视化的监控管理平台:SpringBoot Admin …
这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。
Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。
Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。
开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。
Spring Boot在发布它的第一个版本时没有这个功能。
DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。
它还提供H2数据库控制台以更好地测试应用程序。
- org.springframework.boot
- spring-boot-devtoolstrue
1.可以通过JSONP类解决跨域问题,但是只支持GET方式的请求
2.SpringBoot中我们可以通过WebMvcConfigurer重写里面的addCorsMappings方法,在这个方法中我们添加允许跨域的相关请求
在SpringBoot项目中默认提供了日志框架Logback,所以我们如果需要引入log4j的话,必须先排查Logback的依赖,然后再添加log4j的依赖,然后在src/main/resouces目录下创建log4j.properties文件,然后就可以进行日志的相关的配置。