springboot知识点总结

1.什么是SpringBoot?

(1)用来简化Spring应用的初始搭建以及开发过程,使用特定的方式来进行配置
(2)创建独立的Spring引用程序main方法运行
(3)嵌入的tomcat无需部署war文件
(4)简化maven配置
(5)自动配置Spring添加对应的功能starter自动化配置

2.SpringBoot有哪些优点?

(1)独立运行
Spring Boot 而且内嵌了各种 servlet 容器,Tomcat、Jetty 等,现在不再需要打成war 包部署到容器中,
Spring Boot 只要打成一个可执行的 jar 包就能独立运行,所有的依赖包都在一个 jar 包内。

(2)简化配置
spring-boot-starter-web 启动器自动依赖其他组件,简少了 maven 的配置。

(3)自动配置
Spring Boot 能根据当前类路径下的类、jar 包来自动配置 bean,如添加一个 spring-boot-starter-web 启动器就能拥有 web 的功能,无需其他配置。

(4)无代码生成和XML配置
Spring Boot 配置过程中无代码生成,也无需 XML 配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是 Spring4.x 的核心功能之一。

(5)避免大量的Maven导入和各种版本冲突

(6)应用监控
Spring Boot 提供一系列端点可以监控服务及应用,做健康检测。

3.SpringBoot的核心注解是什么?由那些注解组成?

启动类上@SpringBootApplication是 SpringBoot 的核心注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
      @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {

主要组合包含了以下 3 个注解:

@SpringBootConfiguration:
组合了 @Configuration 注解,实现配置文件的功能。

@EnableAutoConfiguration:
打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

@ComponentScan:
Spring组件扫描。

4. 什么是JavaConfig?

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

(1)面向对象的配置。
由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。
(2)减少或消除 XML 配置。
基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将JavaConfig 与 XML 混合匹配是理想的。
(3)类型安全和重构友好。
JavaConfig 提供了一种类型安全的方法来配置 Spring容器。由于 Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。

5. 开启SpringBoot特性有哪几种方式?

继承spring-boot-starter-parent项目
导入spring-boot-dependencies项目依赖

6. 什么是Spring Boot Starter?

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,可以一站式集成 Spring 和其他技术,
而不需要到处找示例代码和依赖包。Spring Boot Starter的工作原理是:Spring Boot 在启动时扫描项目所依赖的JAR包,
寻找包含spring.factories文件的JAR包,根据spring.factories配置加载AutoConfigure类,根据 @Conditional注解的条件,
进行自动配置并将Bean注入Spring Context

7.SpringBoot自动配置原理是什么?

(1)SpringBoot启动会加载大量的自动配置类
(2)我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
(3)我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件存在在其中,我们就不需要再手动配置了)
(4)给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。
我们只需要在配置文件中指定这些属性的值即可;
xxxxAutoConfigurartion:自动配置类;给容器中添加组件
xxxxProperties:封装配置文件中相关属性;

8. Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

Spring Boot 支持 Java Util Logging, Log4j2, Logback 作为日志框架,如果使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架,推荐的日志框架是Log4j2。

9. SpringBoot、Spring MVC和Spring有什么区别?

(1)Spring
Spring最重要的特征是依赖注入。所有Spring Modules不是依赖注入就是IOC控制反转。
当我们恰当的使用DI或者是IOC的时候,可以开发松耦合应用。

(2)Spring MVC
Spring MVC提供了一种分离式的方法来开发Web应用。通过运用像DispatcherServelet,MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。

(3)SpringBoot
Spring和Spring MVC的问题在于需要配置大量的参数。
SpringBoot通过一个自动配置和启动的项来解决这个问题。

10. Spring Boot 配置加载顺序?

Spring Boot配置加载顺序优先级是:propertiese文件、YAML文件、系统环境变量、命令行参数。

11. Spring Boot 的配置文件有哪几种格式?它们有什么区别?

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

1).properties

app.user.name = javastack

2).yml

app:
  user:
    name: javastack

12.什么是YAML?

YAML 是一种人类可读的数据序列化语言。它通常用于配置文件。与属性文件相比,
如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加结构化,而且更少混淆。
可以看出 YAML 具有分层配置数据。

13. YAML 配置的优势在哪里 ?

(1)配置有序,在一些特殊的场景下,配置有序很关键
(2)支持数组,数组中的元素可以是基本数据类型也可以是对象
(3)简洁方便
相比 properties 配置文件,YAML 还有一个缺点,就是不支持 @PropertySource 注解导入自定义的 YAML 配置。

14. application.properties和bootstrap.properties有何区别 ?

bootstrap比 applicaton 优先加载,配置在应用程序上下文的引导阶段生效, 而且boostrap 里面的属性不能被覆盖;
application用于 spring boot 项目的自动化配置。

15. 什么是 WebSocket?

WebSocket 是一种计算机通信协议,通过单个 TCP 连接提供全双工通信信道。
WebSocket 是双向的 ,使用 WebSocket 客户端或服务器可以实现消息发送。
WebSocket 是全双工的 ,客户端和服务器通信是相互独立的。
WebScoket 使用单个 TCP 连接 ,与http 相比,WebSocket 消息数据交换要轻得多。

16. Spring Boot 中的监视器是什么?(什么是Spring Boot Actuator)?

Spring boot actuator 是 spring 启动框架中的重要功能之一,
Spring boot 监视器可以访问生产环境中正在运行的应用程序的当前状态。
监视器模块公开了一组可直接作为 HTTP URL 访问的 REST 端点来检查状态。

17、如何在 Spring Boot 中禁用 Actuator 端点安全性?

默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。

安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的。

我们可以使用来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全性。

18. 什么是 CSRF 攻击?

CSRF 代表跨站请求伪造,这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。

19. 如何使用 Spring Boot 实现异常处理?

Spring 通过使用 @ControllerAdvice 注解处理异常,实现一个ControllerAdvice 类来处理控制器类抛出的所有异常。

20.运行 Spring Boot 有哪几种方式?

(1)打包用命令或者放到容器中运行

(2)用 Maven/ Gradle 插件运行

(3)直接执行 main 方法运行

21.如何使用SpringBoot实现分页和排序?

使用 Spring Boot 实现分页非常简单。使用 Spring Data-JPA 可以实现将可分页的传递给存储库方法。

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

(1)打包用命令或者放到容器中运行
(2)用 Maven/ Gradle 插件运行
(3)直接执行 main 方法运行

23.Spring Boot 可以兼容老 Spring 项目吗,如何做?

可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。

24、保护 Spring Boot 应用有哪些方法?

(1)在生产中使用HTTPS
(2)使用Snyk检查你的依赖关系
(3)升级到最新版本
(4)启用CSRF保护
(5)使用内容安全策略防止XSS攻击

25、Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?

(1)配置变更
(2)JDK 版本升级
(3)第三方类库升级
(4)响应式 Spring 编程支持
(5)HTTP/2 支持
(6)配置属性绑定

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值