Spring Boot面试题(更新ing)


1. 什么是 SpringBoot?

SpringBoot是一个用于开发和部署Spring应用的框架。它通过提供自动化的配置和快速启动的能力,简化了Spring应用的开发流程。

  • SpringBoot集成了大量常用的依赖,可以快速构建出一个可运行的、独立的Spring应用
  • SpringBoot采用约定优于配置的原则,减少了开发者的配置工作,提高了开发效率。
  • SpringBoot还提供了丰富的可扩展性和可插拔的特性,可以根据需要选择添加或移除组件,使得应用更加灵活和可定制。

2. SpringBoot有哪些优缺点?

优点:SpringBoot相对于SSM框架来说,减少了开发者的配置工作,通过使用@SpringBootApplication注解装配应用,可以快速启动项目。此外,SpringBoot还被广泛应用于微服务SpringCloud的开发,显示出了高度的受欢迎程度。

缺点:例如对于一些特殊需求的项目可能会有限制,因为SpringBoot是自动化配置,无法提供灵活的定制。此外,由于SpringBoot集成了大量的依赖,项目可能会变得庞大,导致启动时间长。

3. 什么是 JavaConfig?

JavaConfig是一种配置Spring应用上下文的方式,与传统的XML配置相比,它使用Java类来代替xml文件,通过在类上使用注解来定义组件的配置信息。JavaConfig提供了更加简洁、类型安全和可重构的配置方式,使得配置更加灵活并且易于维护。


4. 前后端分离,如何维护接口文档 ?

在前后端分离项目中,接口文档的维护非常重要。一种常见的做法是使用Swagger框架来生成和维护接口文档。Swagger可以根据代码中的注解自动生成接口文档,并且提供了一个可视化的界面供开发者查看和测试接口。通过在代码中添加注解,开发者可以方便地定义接口的参数、返回值、错误码等信息,使得接口文档的编写和维护更加简单和高效。


5. 什么是 Spring Data?

Spring Data是一个用于简化数据库访问的框架。它提供了一套统一的API,可以与不同类型的数据存储进行交互,包括关系型数据库、非关系型数据库以及其他形式的数据存储。Spring Data的目标是通过提供通用的数据访问方法和自动化的查询生成,减少开发人员对底层数据访问的工作量,提高开发效率。


6. SpringBoot如何实现打包

SpringBoot可以通过将应用打包成一个可执行的jar包来实现部署。这样可以简化部署过程,只需在目标环境中运行jar文件即可启动应用。打包SpringBoot应用可以使用Maven或Gradle等构建工具,将项目打包成一个独立的可执行文件,包含了应用及其所有的依赖。打包后的应用可以轻松地部署到任何支持Java环境的服务器上。

 7. Spring Framework与Spring Boot什么关系?

Spring Framework和Spring Boot是两个相关但不同的项目。
Spring Framework是一个开源的Java应用程序框架,提供了一系列的库和工具,用于开发企业级Java应用程序。它提供了控制反转(IoC)和面向切面编程(AOP)等特性,帮助开发者构建可扩展和模块化的应用程序。Spring Framework可以被看作是一个基础设施框架,提供了各种组件和功能,用于处理数据库访问、事务管理、Web开发等任务。

Spring Boot是构建在Spring Framework之上的一个开发框架,旨在简化Spring应用程序的配置和部署。它提供了自动配置、快速开发和无需繁琐的XML配置的特性。Spring Boot通过提供一套默认的配置,简化了项目的搭建和部署过程,同时也减少了开发人员的配置工作量。Spring Boot还集成了其他常用的框架和库,如Spring Data JPA和Spring Cloud等,方便开发者构建微服务架构。

因此,可以说Spring Boot是Spring Framework的扩展和简化版本,旨在提供更便捷的开发体验和更高效的部署方式。它帮助开发者快速搭建和部署Spring应用程序,同时仍然可以享受到Spring Framework提供的强大功能和灵活性。

8. Spring、SpringBoot、SpringMVC的区别?

Spring Boot 本质上是 Spring 的延伸,它是基于 Spring 的,它为快速构建和开发 Spring 提供了有力的支撑;接着介绍了 Spring Boot 的四大特性:更快速的构建能力、起步依赖、内嵌容器支持、Actuator 监控支持等

9. springcloud和springboot的区别


10. 你如何理解 SpringBoot 中的 Starters?工作原理是什么?常用的 Starter 有哪些?能否举一个例子来解释更多 Staters 的内容?springboot自定义starter写过吗,怎么保证有效 ?

       在Spring Boot中,Starters是一系列可以集成到应用程序中的依赖包。它们可以简化开发人员的工作,提供了一站式集成Spring及其他技术的方便方式。通过使用Starters,开发人员可以轻松地将所需的功能集成到他们的应用程序中,而不需要手动添加依赖项或编写示例代码。

       Starters为常见的功能和技术提供了相关的maven依赖项,可以在pom.xml文件中进行配置并通过maven来管理,例如:

  • spring-boot-starter-web : 用于开发Web和RESTful应用程序
  • spring-boot-starter-test : 用于单元测试和集成测试
  • spring-boot-starter-jdbc : 用于数据库访问
  • spring-boot-starter-data-jpa : 用于使用Hibernate的Spring Data JPA
  • spring-boot-starter-security : 用于安全性
  • spring-boot-starter-data-solr
  • ...

       因此,引入适合项目需求的Starters,开发人员能够更加高效地构建和部署应用程序, 同时降低了配置和依赖管理的复杂性,提高开发效率。

11.


12. 如何集成 SpringBoot 和 ActiveMQ?

关于集成Spring Boot和ActiveMQ,可以通过引入spring-boot-starter-activemq依赖项来实现。在配置文件中指定ActiveMQ的相关配置,如地址、端口和队列名称等。然后在代码中使用Spring Boot提供的JmsTemplate来进行消息的发送和接收。 


13. 什么是YAML?

yaml是一种用于配置文件的标记语言,它具有比传统的属性文件更加简洁和易读的语法。在Spring Boot中,可以使用yaml格式的配置文件来配置应用程序的各种属性和参数。通过yaml的层级结构和简洁的语法,可以更清晰地组织和管理配置信息。 


14. SpringBoot 的核心注解是哪个?它主要由哪几个注解组成的?

Spring Boot的核心注解是@SpringBootApplication。它是一个组合注解,包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan注解。@SpringBootConfiguration用于标识该类是Spring Boot的配置类,@EnableAutoConfiguration用于启用自动配置,@ComponentScan用于扫描和加载Spring组件。 


15. 保护 SpringBoot 应用有哪些方法?

保护Spring Boot应用程序的方法有多种,其中一种是通过Spring Security来实现身份认证和授权。可以配置Spring Security的相关规则和策略来保护应用程序的资源和接口。另外,还可以通过使用HTTPS协议来加密和保护应用程序的数据传输。此外,还可以使用Spring Boot Actuator提供的监控功能来监控应用程序的运行状态和性能指标。

16. 如何在不使用BasePACKAGE过滤器的情况下排除程序包?


17. 微服务中如何实现 session 共享 ?


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

19. springboot自动装配注解

SpringBoot通过少量注解和简单配置来实现第三方组件的自动装配。它通过扫描外部引用jar包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到Spring容器,并执行定义的操作。所以在没有Spring Boot的情况下,引入第三方依赖需要手动配置,非常麻烦。但是在Spring Boot中,我们只需要引入对应的starter即可使用所需功能,比如引入spring-boot-starter-data-redis就可以使用redis。 

20. 说一下springboot的配置读取顺序

Spring Boot会按照以下顺序加载配置文件:

1. 命令行参数
2. 来自java:comp/env的JNDI属性
3. Java系统属性(System.getProperties())
4. 操作系统环境变量
5. RandomValuePropertySource配置的random.*属性值
6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)
7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)
8. jar包外部的application.properties或application.yml(不带spring.profile)
9. jar包内部的application.properties或application.yml(不带spring.profile)

21. springboot中redis配置文件在哪

默认情况下,Spring Boot会按照以下顺序加载redis的配置:

1. application.properties或application.yml文件中的spring.redis.*属性
2. application-{profile}.properties或application-{profile}.yml文件中的spring.redis.*属性

在这些配置文件中,可以设置redis的连接信息、连接池配置等,根据项目的实际情况进行配置。

22. springboot 项目启动命令 

springboot项目启动命令: Spring Boot项目可以使用java -jar命令来运行,需要在命令行中进入项目的根目录,然后执行java -jar xxx.jar,其中xxx.jar是你的Spring Boot项目的可执行jar文件名。  


23. Springboot自动装配原理

Spring Boot的自动装配原理是通过@EnableAutoConfiguration注解和spring.factories文件实现的。SpringBoot启动找到自动化配置包下META-INF/spring.factories内的EnableAutoConfiguration配置列表;每个自动配置类按照条件进行生效,默认都会绑定配置文件指定的值;生效的配置类就会给容器中装配很多组件;只要容器中有这些组件,相当于这些功能就有了。总之SpringBoot加载所有META-INF/spring.factories文件下的自动装配类,然后通过条件过滤获取可被装配的配置类,然后配置类被spring加载到IOC容器下。


24. SpringBoot多数据源拆分的思路

SpringBoot多数据源拆分的思路: 实现Spring Boot的多数据源拆分可以通过配置多个数据源和事务管理器,然后在需要使用不同数据源的地方使用不同的数据源和事务管理器。可以使用@Configuration注解和@Bean注解来配置多个数据源和事务管理器,并在需要使用的地方指定对应的数据源和事务管理器。 

25. springboot的加载机制有哪些

Spring Boot的加载机制主要包括自动装配依赖管理两个方面。自动装配通过@EnableAutoConfiguration注解和spring.factories文件实现,可以根据条件自动加载相应的配置类。依赖管理可以通过在pom.xml文件中定义依赖关系来实现,Spring Boot会根据依赖关系自动加载相应的依赖。 

26. Springboot的启动参数

 Spring Boot的启动参数可以通过application.properties或application.yml文件来配置。可以在这些文件中定义各种属性和参数,然后在启动命令中指定这些文件的位置。例如,可以使用--spring.config.location参数来指定配置文件的位置。另外,还可以使用-D参数来设置JVM的系统属性。 

27. 如何使用 SpringBoot 自动重装我的应用程序?


28. 创建一个 SpringBoot Project 的最简单的方法是什么?


29. Spring Cache 三种常用的缓存注解和意义?


30. 什么是Spring Actuator?它有什么优势?


31. 什么是 Spring Profiles?


32. 如何使用 SpringBoot 部署到不同的服务器?


33. 如何重新加载SpringBoot上的更改,而无需重新启动服务器?


34. SpringBoot多数据源事务如何管理


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


36. SpringBoot 支持哪些日志框架?推荐和默认的日志框架是哪个?


37. spring boot扫描流程?


38. 如何重新加载SpringBoot上的更改,而无需重新启动服务器?


39. SpringBoot自动配置的原理是什么?如何实现的?


40. SpringBoot 配置加载顺序?


41. spring boot初始化环境变量流程?


42. 运行 SpringBoot 有哪几种方式?


43. SpringBoot 中如何解决跨域问题 ?


44. SpringBoot如何配置log4j?


45.  在 Spring Initializer 中,如何改变一个项目的包名字?


46. SpringBoot 的配置文件有哪几种格式?它们有什么区别?核心的两个配置文件:


47. 什么是 Swagger?你用 SpringBoot 实现了它吗?


48. spring boot 核心配置文件是什么?bootstrap、properties 和 application、properties 有何区别 ?


49. 什么是Spring Initializer?


50. SpringBoot集成mybatis的过程


51.是否可以在Spring boot中更改嵌入式Tomcat服务器的端口?


52. 如何在 SpringBoot 启动的时候运行一些特定的代码?


53. 什么是 CSRF 攻击?


54. bootstrap.yml和application.yml有什么区别?


55. 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?


56. 什么是FreeMarker模板?


57. SpringBoot多数据源事务如何管理


58. SpringBoot 支持哪些日志框架?推荐和默认的日志框架是哪个?


59. spring boot扫描流程?


60. 如何重新加载SpringBoot上的更改,而无需重新启动服务器?


61. 如何使用SpringBoot实现分页和?


62. 如何使用 SpringBoot 自动重装我的应用程序?


63. 创建一个 SpringBoot Project 的最简单的方法是什么?


64. Spring Cache 三种常用的缓存注解和意义?


65. 什么是Spring Actuator?它有什么优势?


66.  什么是 Spring Profiles?


67. 如何使用 SpringBoot 部署到不同的服务器?


68. 什么是WebSockets?


69. SpringBoot 2.X 有什么新特性?与 1.X 有什么区别?


70. Springboot怎么声明一个Bean?

71. SpringBoot的工作原理 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值