加载中...
avatar
文章
42
标签
25
分类
21
首页
Java
Spring全家桶
  • Spring
  • SpringBoot
  • SpringCloud
JVM
源码
  • Mybatis
  • HashMap
归档
其他
  • 互联网电子书汇总
  • JAVA八股文指南
  • 历史
  • 相册
关于
Logo码农Stormling面试系列(一)| SpringBoot 面试题
搜索
首页
Java
Spring全家桶
  • Spring
  • SpringBoot
  • SpringCloud
JVM
源码
  • Mybatis
  • HashMap
归档
其他
  • 互联网电子书汇总
  • JAVA八股文指南
  • 历史
  • 相册
关于

面试系列(一)| SpringBoot 面试题

发表于2021-10-06|更新于2025-01-16|SpringBoot
|总字数:1.2k|阅读时长:4分钟|浏览量:

1.什么是 SpringBoot

Spring组件一站式解决方案,主要简化了 Spring 难度,简省了繁重的配置,提供了各种的启动器,是开发上手快

2.Spring Boot 优点

  1. 开箱即用,原理繁琐配置
  2. 内嵌服务器、安全管理、运行数据监控、运行状态检查、外部化配置
  3. 易上手开发效率高,有完善的第三方start库和官网 starter

总结:编码、配置、部署、监控 简单

2.SpringBoot 启动类注解?它是由那些注解组成?

@SpringBootApplication

  • @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。
  • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项
  • @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
  • @ComponentScan:Spring组件扫描

3.yaml是什么

用来表达数据序列化的参数

4.SpringBoot启动方式

  1. main方法
  2. 命令行 java -jar
  3. mvn/gradle

5.SpringBoot 需要独立的容器独立?

内置了Tomcat/Jetty

6.SpringBoot自动配置原理

在sprinBoot启动时由 @SpringBootApplication 注解会自动去maven中读取每个 starter 中的 spring.factories文件,该文件里配置了所有需要被创建spring容器中的bean,并且进行自动配置把 bean注入SpringContext中 //(SpringContext是Spring的配置文件)

7.SpringBoot监视器是什么,如何配置监控?

Spring boot actuator 是 spring 启动框架中的重要功能之一。
Spring boot 监视器可帮助您访问生产环境中 **正在运行的应用程序的当前状态** 。
有几个指标必须在生产环境中进行检查和监控。即使一 些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接 作为 HTTP URL 访问的REST 端点来检查状态。

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

yml

management:
    endpoint:
        health: ## 开启健康监控端点
            enabled: true
        beans: ## 开启Bean实例监控端点
            enabled: true

健康监控开启标志,启动了两个端点,默认之开启 health 和 info 端口

image-20220223093051031

yml

management:
	endpoints:
		web:
			exposure:
				include: "*" ## 开启所有端点暴露

8.查看各个监控信息?

/actuator 端点 ,默认开启了两个端点,health 和 info

{
  "_links": {
    "self": {
      "href": "http://localhost:9999/actuator",
      "templated": false
    },
    "health": {
      "href": "http://localhost:9999/actuator/health", 查看当前服务的是否上线
      "templated": false
    },
    "health-path": {
      "href": "http://localhost:9999/actuator/health/{*path}",
      "templated": true
    },
    "info": {
      "href": "http://localhost:9999/actuator/info",
      "templated": false
    }
  }
}

如果将所有端点暴露

访问路径: ip:port/actuator/xx

image-20220223094652254

loggers 端点

访问 http://localhost:8080/actuator/loggers 可以查看当前应用的日志级别等信息:

这里面本身并不特别,但是有一个功能却非常有用,比如我们生产环境日志级别一般都是 info,但是现在有一个 bug 通过 info 级别无法排查,那么我们就可以临时修改 log 级别。

比如上图中的 ROOT 节点是 info 级别,那么我们可以通过 postman 等工具来发一个 post 请求修改日志级别。

image-20220223095330889

修改之后就会发现,日志由原来的 info 变成了 debug:

image-20220223095351178

metrics 端点

非常重要的监控端点,监控内容包含 JVM内存、堆、类加载、处理器和 tomcat 容器等重要的指标

image-20220223095921378

自定义监控端点

这一部分之后再详介绍

9.SpringBoot 中的starter?

可以理解成对依赖的一种合成,starter会把一个或者一套功能相关的依赖包含进来,避免造轮子。

10.什么是SpringProfiles

开发到生产,经过开发(dev)、测试(test)、上线(prod),主要针对不同的的配置。Spring Profiles允许用户根据配置文件(dev/test/prod)来注册bean。

11.激活不同环境配置

yml:

spring:
	profiles:
		active: dev

命令行:

java -jar xx.jar --spring.profiles.active=dev

12.SpringBoot异常处理相关注解?

@ControllerAdvice

@ExceptinoHandler

13.SpringBoot1.1 和 2.x的区别?

  1. SpringBoot 2基于Spring5和JDK8,Spring 1.x用的最低版本
  2. 配置变更,参数名
  3. SpringBoot 2相关插件最低版本很多都要比原来高
  4. 2.x配置中的中文可以直接读取

14. Spring Boot 中如何解决跨域问题 ?

后端通过 (CORS,Cross origin resource sharing) 来解决跨域问题。这种解决方案并非 Spring Boot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS , 现在可以通过实现 **WebMvcConfigurer** 接口然后重写 **addCorsMappings** 方法解决跨域问题。
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
        .allowedOrigins("*")
        .allowCredentials(true)
        .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
        .maxAge(3600);
    }
}

参考:

https://mp.weixin.qq.com/s/kisvBJABJ27rb6JNZdCyqA

文章作者: stormling
文章链接: http://www.stormling.top/posts/10749.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 码农Stormling!
SpringBoot
cover of previous post
上一篇
面试系列(二)| SpringCloud 面试题
微服务基础1.什么是微服务架构​ 微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务 运行在自己的进程中,并使用轻量级的机制通信。这些服务围绕业务能力来划分,并通过自动化部 署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。 2.为什么需要学习Spring Cloud 首先Spring Cloud基于Spring Boot的优雅简洁,可还记得我们被无数xml支配的恐惧?可还记得 Spring MVC ,Mybatis 错综复杂的配置,有了Spring Boot,这些东西都不需要了,Spring Boot好处不再赘诉,Spring Cloud就基于Spring Boot把市场上优秀的服务框架组合起来,通过Spring Boot风 格进行再封装屏蔽掉了复杂的配置和实现原理 什么叫做开箱即用?即使是当年的黄金搭档 Dubbo + ZooKeeper下载配置起来也是颇费心神的!而 Spring Cloud完成这些只需要一个jar的依赖就可以了! Spring Cloud大多数子模块都是直击痛点,像...
cover of next post
下一篇
Java系列(七)| 日志快速入门
前言日志和异常处理结合得当的话,会给项目维护带来非常大的价值。 日志:就是介绍一个过程和经历的详细记录。 项目日志:就是项目开发过程的详细记录,一般由项目经理记录。 代码里的日志:就是程序员记录某个开发过程的详细情况,这是项目里每个程序员需要做的工作。 代码里的日志在项目中扮演着非常重要的角色,日志记录的详细程度决定系统是否容易维护,Java 项目中日志记录的框架有很多,在项目中如何选型也必将困惑。 我们这场 chat 讨论的主题就是:Java 代码里的日志,主要是写给 Java 程序员看的,本篇 Chat 从以下六个方面对 Java 日志进行阐述: 一、日志在项目中的作用 二、Java 日志使用的困惑 三、Java 日志演化历史 四、使用不同框架的 Java 日志示例说明 五、项目中日志记录遵守哪些原则 六、一个推荐的项目 Java 日志实例 以期通过本场 Chat 的学习,能使大家在编码过程中,对日志的处理过程加深认识、统一规范、得到收获,从零开始轻松掌握 Java...

评论
ValineGitalk
avatar
stormling
文章
42
标签
25
分类
21
Follow Me
公告
欢迎大家来到Stormling博客
目录
  1. 1. 1.什么是 SpringBoot
  2. 2. 2.Spring Boot 优点
  3. 3. 2.SpringBoot 启动类注解?它是由那些注解组成?
  4. 4. 3.yaml是什么
  5. 5. 4.SpringBoot启动方式
  6. 6. 5.SpringBoot 需要独立的容器独立?
  7. 7. 6.SpringBoot自动配置原理
  8. 8. 7.SpringBoot监视器是什么,如何配置监控?
  9. 9. 8.查看各个监控信息?
    1. 9.1. loggers 端点
    2. 9.2. metrics 端点
    3. 9.3. 自定义监控端点
  10. 10. 9.SpringBoot 中的starter?
  11. 11. 10.什么是SpringProfiles
  12. 12. 11.激活不同环境配置
  13. 13. 12.SpringBoot异常处理相关注解?
  14. 14. 13.SpringBoot1.1 和 2.x的区别?
  15. 15. 14. Spring Boot 中如何解决跨域问题 ?
  16. 16. 参考:
最新文章
面向八股文面试专场
面向八股文面试专场2025-01-22
【每日早报】-2025-01-21 - 星期二
【每日早报】-2025-01-21 - 星期二2025-01-21
规则引擎 Drools 8+ 快速入门
规则引擎 Drools 8+ 快速入门2024-12-11
数据库系列(二) | Mybatis Plus 3.0+快速入门
数据库系列(二) | Mybatis Plus 3.0+快速入门2024-12-09
分布式系列(二) | Redisson分布式锁
分布式系列(二) | Redisson分布式锁2024-12-05
©2019 - 2025 By stormling
码农Stormling程序员,关注公众号【码农Stormling】回复【面试】获取最全面试pdf
搜索
数据加载中