Springboot-聊天室Websockt
引入依赖1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>
WebSocket 配置类注册 WebSocket 扫描类到容器中(注册该对象主要用于扫描带有@ServerEndpoint 的类,如果使用外置的 tomcat 就不需要该对象)
12345678@Configurationpublic class WebSocketStompConfig { //这个bean的注册,用于扫描带有@ServerEndpoint的注解成为websocket ,如果你使用外置的tomcat就不需要该配置文件 @Bean public ServerEndpointExporter serverEndpointExporter(){ return new ServerEndpointExpo ...
SpringBoot-定时任务
在编写 Spring Boot 应用中经常会遇到这样的场景,比如:需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。
创建定时任务在 Spring Boot 中编写定时任务是非常简单的事,下面通过实例介绍如何在 Spring Boot 中创建定时任务,实现每过 5 秒输出一下当前时间。
在 Spring Boot 的主类中加入@EnableScheduling注解,启用定时任务的配置
123456789@SpringBootApplication@EnableSchedulingpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
创建定时任务实现类
1234567891011@Componentpublic class ScheduledTasks { private static final SimpleDateFormat ...
Mybatis-缓存工作原理
前言在计算机的世界中,缓存无处不在,操作系统有操作系统的缓存,数据库也会有数据库的缓存,各种中间件如 Redis 也是用来充当缓存的作用,编程语言中又可以利用内存来作为缓存。自然的,作为一款优秀的 ORM 框架,MyBatis 中又岂能少得了缓存!
MyBatis 缓存MyBatis 中的缓存相关类都在 cache 包下面,而且定义了一个顶级接口 Cache,默认只有一个实现类 PerpetualCache,PerpetualCache 中是内部维护了一个 HashMap 来实现缓存。需要注意的是 decorators 包下面的所有类也实现了 Cache 接口,那么为什么我还是要说 Cache 只有一个实现类呢?其实看名字就知道了,这个包里面全部是装饰器,也就是说这其实是装饰器模式的一种实现。我们随意打开一个查看可以看到,最终都是调用了 delegate 来实现,只是将部分功能做了增强,其本身都需要依赖 Cache 的唯一实现类 PerpetualCache(因为装饰器内需要传入 Cache 对象,故而只能传入 PerpetualCache 对象,因为接口是无法直接 new 出来传进去 ...
Mybatis-使用PageHelper分页
1、引入依赖只引入 PageHelper 不会自动适配 SpringBoot 失效,还需要整合依赖 pagehelper-spring-boot-autoconfigure
123456789101112<!--pagehelper分页插件 --><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.0</version></dependency><!-- Mybatis-plus --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <ver ...
Mybatis-拦截器插件例子(敏感信息加密)
1. 前言在学习 PageHelper 分页插件的时候,对于其如何和 Mybatis 结合进行拦截,还是有些朦胧,这里通过一个例子实现自定义的 Mtbatis 拦截器插件。
2、什么是 Mybatis Plugin在 Mybatis 官方文档中,对于 Mybatis plugin 的的介绍是这样的:MyBatis 允许在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:
12345678//语句执行拦截Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)// 参数获取、设置时进行拦截ParameterHandler (getParameterObject, setParameters)// 对返回结果进行拦截ResultSetHandler (handleResultSets, handleOutputParameters)//sql语句拦截StatementHandler (prepare, para ...
MybatisPlus-简化开发
MybatisPlus 官方文档:https://baomidou.com/guide/page.html
Mybatis Plus 使用流程导入依赖:12345<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.4.3.2</version></dependency>
实现映射:1.对象名称与表的名称一一对应。 2.对象的属性与表中的字段一一对应。
注解:@TableName表名注解
属性
类型
必须指定
默认值
描述
value
String
否
“”
表名
schema
String
否
“”
schema
keepGlobalPrefix
boolean
否
false
是否保持使用全局的 tablePrefix 的值(如果设置了全局 tablePrefix 且自行设置了 value 的值)
resul ...
SpringSecurity-权限控制
简介官网:https://spring.io/projects/spring-security实际应用系统中,为了安全起见,一般都必备用户认证(登录)和权限控制的功能,以识别用户是否合法,以及根据权限来控制用户是否能够执行某项操作。Spring Security 是一个安全相关的框架,能够与 Spring 项目无缝整合,本文主要是介绍 Spring Security 默认的用户认证和权限控制的使用方法和原理,但不涉及到自定义实现。Spring Security 用户认证和权限控制(自定义实现)这篇文章专门讲解用户认证和权限控制相关的自定义实现。(1)用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗点说就是系统认为用户是否能登录(2)用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。通俗点讲就 ...
SpringBoot-全局异常处理
为什么需要全局异常处理?在日常开发中,为了不抛出异常堆栈信息给前端页面,每次编写 Controller 层代码都要尽可能的 catch 住所有 service 层、dao 层等异常,代码耦合性较高,且不美观,不利于后期维护。这时就需要进行统一的异常处理。为解决该问题,计划将 Controller 层异常信息统一封装处理,且能区分对待 Controller 层方法返回给前端的 String、Map、JSONObject、ModelAndView 等结果类型。
Springboot 默认是如何做的?Spring Boot 提供了一套默认的异常处理机制,一旦程序中出现了异常,Spring Boot 会自动识别客户端的类型(浏览器客户端或机器客户端),并根据客户端的不同,以不同的形式展示异常信息。
对于浏览器客户端而言,Spring Boot 会响应一个“ whitelabel”错误视图,以 HTML 格式呈现错误信息,如图:
对于机器客户端而言,Spring Boot 将生成 JSON 响应,来展示异常消息:
1234567{ "timestamp": "2021-07-12T ...
SpringBoot-参数校验Validator
数据校验是在平时的编码过程中常做的工作,在系统的各个层可能都要去实现一些校验逻辑,再去做业务处理。这些繁琐的校验与我们的业务代码在一块就会显得臃肿。而且这些校验通常是业务无关的。Bean Validation 2.0(JSR 380)定义了用于实体和方法验证的元数据模型和 API,Hibernate Validator 是目前最好的实现,下面整理具体使用。
依赖如果是 Spring Boot2.3 之前的项目,那么 spring-boot-starter-web 中就已经依赖 hibernate-validator 了
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>
否则可以添加 hibernate-validator 依赖
12345<dependency> <groupId> ...
SpringBoot-自定义注解切面AOP
简介在做博客项目的时候需要记录用户操作日志,这时候需要自定义注解与切面来实现。
步骤1、依赖需要引入相应依赖,这里肯定时能和数据库关联了(简单的来说就是能够在浏览器上进行增删改查)。
12345<!-- aop的依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>
2、自定义日志注解定义一个方法级别的@Log注解,用于标注需要监控的方法:
12345678910111213import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * ...
一个基础的SpringBoot 项目该包含哪些东西?
前言建立一个全新的项目,或者把旧的庞大的项目,进行拆分成多个项目。在建立新的项目中,经常需要做一些重复的工作,比如说拷贝一下常用的工具类,通用代码等等。所以就可以做一个基础的项目方便使用,在经历新项目的时候,直接在基础项目上进行简单配置就可以开发业务代码了。
基础项目该包含哪些东西
Swagger 在线接口文档。
CodeGenerator 代码生成器。
统一返回。
通用的分页对象。
常用工具类。
全局异常拦截。
错误枚举。
自定义异常。
多环境配置文件。
Maven 多环境配置。
日志配置。
JenkinsFile。
Swagger写接口文档通常是一件比较头疼的事情,然而 swagger 就用是用来解决这个问题的。可以在线生成接口文档,并且可以在页面上进行测试。可以非常清楚的显示,请求数据已经响应数据。当然这一切都需要在代码中进行配置。「注意的点:接口文档只能在测试 / 开发环境开启,其他环境请关闭。」
常用的 Swagger 注解
@Api用于Controller
@ApiOperation用于Controller内的方法。
@ApiResponses用于标识接口返回数据的类 ...
SSM框架整合
1. 环境配置1.1 新建一Maven项目!ssmbuild , 添加web的支持1.2 导入相关的pom依赖!123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566<dependencies> <!--Junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!--数据库驱动--> <dependency> <groupId>mysql</groupId> <artifac ...