SpringBoot知识点总结

SpringBoot是一款快速开发框架,简化配置,内置Tomcat,支持自动配置和组件扫描。文章详细介绍了@SpringBootApplication、DevTools、Actuator、配置文件、安全管理和分页排序等功能,并讨论了与Swagger、Spring Profiles、Spring Batch、FreeMarker、WebSockets、异常处理、CSRF防护、CORS解决跨域等话题,提供全面的SpringBoot知识总结。
摘要由CSDN通过智能技术生成

1、SpringBoot 简介及优点

Spring Boot 是 Spring 开源组织下的子项目,SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,内置Tomcat容器,帮助开发者能够实现快速开发,SpringBoot的Web组件 默认集成的是SpringMVC框架。

Spring Boot的主要优点:
独立运行
为所有Spring开发者更快的入门
提供各种默认配置来简化项目配置
内嵌式容器简化Web项目
没有冗余代码生成和XML配置的要求
避免大量的 Maven 导入和各种版本冲突

2、@SpringBootApplication

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下3 个解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring组件扫描。

3、如何重新加载Spring Boot上的更改,而无需重新启动服务器?

这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。Spring Boot有一个开发工具(DevTools)模 块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑 战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新 加载Spri ng Boot上的更改,而无需重新启动服务器。这将消除每次手动部 署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。这 是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模 块将在生产环境中被禁用

Devtools原理

  1. devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的。
  2. devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现(这里注意不同的模板配置不一样)

4、 Spring Boot中的监视器是什么?

可帮助你在应用程序生产环境时监视和管理应用程序。可以使用HTTP的各种请求来监管,审计,收集应用的运行情况.特别对于微服务管理十分有意义.缺点:没有可视化界面。

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

默认情况下,所有敏感的HTTP端点都是安全的,只有具有ACTUATOR 角色的用户才能访问它们。安全性是使用标准的HttpServletRequest.isUserlnRole方法实施的。我们可以使用 management.security.enabled = false来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全 性。

6、 如何在自定义端口上运行Spring Boot应用程序?

为了在自定义端口上运行Spri ng Boot应用程序,您可以在 applicati on .properties 中指定端口。
server.port = 8090

7、 如何使用Spring Boot实现分页和排序?

使用Spr ing Boot实现分页非常简单。使用Spri ng Data-JPA可以实现将 可分页的 org.spri ngframework.data.doma in .Pageable 传递给存储库方法。

8、 什么是Swagger?你用Spring Boot实现了它吗?

Swagger广泛用于可视化API,使用Swagger UI为前端开发人员提供在 线沙箱。Swagger是用于生成RESTful Web服务的可视化表示的工具,规 范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger正确定义时,消费者可以使用最少量的实现逻辑来理解远程服 务并与其进行交互。因此,Swagger消除了调用服务时的猜测。

9、 什么是 Spring Profiles?

Spring Profiles允许用户根据配置文件(dev, test, prod等)来注册bean。 因此,当应用程序在开发中运行时,只有某些bean可以加载,而在 PRODUCTION中,某些其他bean可以加载。假设我们的要求是 Swagger文档仅适用于QA环境,并且禁用所有其他文档。这可以使用配 置文件来完成。Spring Boot使得使用配置文件非常简单。

在项目的开发中,有些配置文件在开发、测试或者生产等不同环境中可能是不同的,例如数据库连接、redis的配置等等。那我们如何在不同环境中自动实现配置的切换呢?Spring给我们提供了profiles机制,下面看看在Spring Boot中是如何使用Profiles功能的。

在Spring Boot中多环境配置文件名需要使用application-{profile}.properties的格式,这里的**{profile}**对应的是你的环境标识。例如:

application-dev.properties — 这是开发环境
application-prod.properties — 这是生产环境

程序会默认加载application.properties中的配置,我们想要使用对应的环境,只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的{profile},这里就是指dev、prod:

spring.profiles.active=dev

10、 什么是 Spring Batch?

Spring Boot Batch提供可重用的函数,这些函数在处理大量记录时非常重 要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳 过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技 术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处 理作业可以高度可扩展的方式利用框架处理重要大量的信息。

11、 什么是FreeMarker模板?

FreeMarker是一个基于Java的模板引擎,最初专注于使用MVC软件架构 进行动态网页生成。使用Freemarker的主要优点是表示层和业务层的完 全分离。程序员可以处理应用程序代码,而设计人员可以处理html页面 设计。最后使用freemarker可以将这些结合起来,给出最终的输出页面。

模板引擎
在动态HTML实现上Spring Boot依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在推荐的模板引擎下,我们可以很快的上手开发动态网站。
Spring Boot提供了默认配置的模板引擎主要有以下几种:
• Thymeleaf
• FreeMarker
• Velocity
• Groovy
• Mustache
Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性,具体可见后文:支持JSP的配置
当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。

12、 如何使用Spring Boot实现异常处理?

Spring提供了一种使用ControllerAdvice处理异常的非常有用的方法。我们 通过实现一个Co ntrolerAdvice类,来处理控制器类抛出的所有异常。

@ControllerAdvice
public class GlobalExceptionHandler {
   
	@ExceptionHandler(RuntimeException.class)
	@ResponseBody
	public Map<String, Object> exceptionHandler() {
   
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("errorCode", "101");
		map.put("errorMsg", "系統错误!");
		return map;
	}
}

13、 什么是CSRF攻击?Spring Boot 中如何解决跨域问题 ?

CSRF代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份 验证的Web应用程序上执行不需要的操作。CSRF攻击专门针对状态改 变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。
跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (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);
    }

}

项目中前后端分离部署,所以需要解决跨域的问题。
我们使用cookie存放用户登录的信息,在spring拦截器进行权限控制,当权限不符合时,直接返回给用户固定的json结果。
当用户登录以后,正常使用;当用户退出登录状态时或者token过期时,由于拦截器和跨域的顺序有问题,出现了跨域的现象。
我们知道一个http请求,先走filter,到达servlet后才进行拦截器的处理,如果我们把cors放在filter里,就可以优先于权限拦截器执行。

学习尚硅谷视频整理的文档 Spring Boot 1 1 Spring Boot入门 4 1.1 简介 4 1.2 微服务(martin fowler发表了一篇文章) 5 1.3 环境约束 7 1.4 第一个Spring Boot项目(jar):HelloWorld 8 1.5 入门案例详解 11 1.5.1 POM文件 11 1.5.2 主程序类,主入口类 12 1.6 使用Spring Initializer向导快速创建Spring Boot 16 2 Spring Boot配置 18 2.1 配置文件 18 2.2 YML语法 19 2.3 YML配置文件值获取 21 2.4 properties配置文件乱码问题 24 2.5 @ConfigurationProperties与@Value的区别 25 2.6 配置@PropertySource、@ImportResource、@Bean 27 2.7 配置文件占位符 30 2.8 Profile多环境支持 31 2.9 配置文件的加载位置 33 2.10 外部配置加载顺序 36 2.11 自动配置原理 37 2.12 @Conditional派生注解 41 3 Spring Boot与日志 42 3.1 日志框架分类和选择 42 3.2 SLF4j使用 43 3.3 其他日志框架统一转换成slf4j+logback 44 3.4 Spring Boot日志使用 45 3.5 Spring Boot默认配置 47 3.6 指定日志文件和日志Profile功能 52 3.7 切换日志框架(不使用SLF4j+LogBack) 54 4 Spring Boot与Web开发 55 4.1 Web开发简介 55 4.2 静态资源映射规则 56 4.3 引入Thymeleaf 60 4.4 Thymeleaf语法 61 4.5 SpringMVC自动配置原理 67 4.6 SpringBoot扩展与全面接管 70 4.7 如何修改SpringBoot的默认配置 72 4.8 【实验】CRUD操作 73 4.8.1 默认访问首页 73 4.8.2 登录页面国际化 74 4.8.3 登录 80 4.8.4 拦截器进行登录检查 81 4.8.5 实验要求(没按要求做,不想改了!) 82 4.8.6 CRUD-员工列表 83 4.8.7 CRUD-员工修改 86 4.8.8 CRUD-员工添加 87 4.8.9 CRUD-员工删除 88 4.9 错误处理原理&错误页面定制 90 4.10 配置嵌入式Servlet容器(springboot 1.50版本) 97 4.10.1 如何定制和修改Servelt容器的相关配置 97 4.10.2 注册servlet三大组件【servlet,filter,listener】 98 4.10.3 替换为其他嵌入式容器 102 4.10.4 嵌入式servlet容器自动配置原理 103 4.10.5 嵌入式servlet容器启动原理 103 4.11 使用外置的Servlet容器 104 4.11.1 步骤 104 4.11.2 原理 107 5 Spring Boot与Docker(虚拟化容器技术) 110 5.1 简介 110 5.2 核心概念 111 5.3 安装Docker 112 5.4 Docker常用命令&操作 113 5.5 安装MySQL示例 114 6 Spring Boot与数据访问 115 6.1 JDBC 115 6.1.1 实现 115 6.1.2 自动配置原理 116 6.2 整合Durid数据源 117 6.3 整合Mybatis 122 6.3.1 注解版 123 6.3.2 配置文件版 124 6.4 整合SpringData JPA 125 6.4.1 SpringData简介 125 6.4.2 整合 126 7 Spring Boot启动配置原理 128 7.1 启动流程(Springboot 1.50版本) 128 7.1.1 创建SpringApplication对象 129 7.1.2 运行run方法 130 7.1.3 编写事件监听机制 132 8 Spring Boot自定义starters 136 8.1 概述 136 8.2 步骤 137 9 更多Springboot整合示例 144 10 Spring Boot与缓存 145 10.1 JSR107缓存规范 145 10.2 Spring的缓存抽象 146 10.2.1 基本概念 146 10.2.2 整合项目 146 10.2.3 CacheEnable注解 148 10.2.4 Cache注解 150 10.3 整合redis 154 10.3.1 在Docker上安装redis 154 10.3.2 Redis的Template 154 10.3.3 整合(百度) 155
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值