![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringBoot
文章平均质量分 52
terrybg
分享Java、微服务、架构、前端、项目管理技术,欢迎一起交流。
展开
-
SpringBoot常用定时器库整合(Java Timer、线程池、Quartz、Task)
定时器可用于做数据统计、年度报表、定时刷新token等。本章主要描述以下常用定时器库的用法:1.Java Timer 2.Java 线程池 3.Quartz 4.Spring Task原创 2022-09-05 20:09:04 · 11837 阅读 · 1 评论 -
二级缓存j2cache和SpringBoot整合
j2cache是开源的二级缓存库,支持实现:本地缓存Ehcache、Caffeine、远程缓存Redis、Memcached。常见解决方案 如一级缓存使用Ehcache、二级缓存使用Redis。上篇描述的阿里开源的jetcache,是支持二级缓存,只是相比j2cache不够灵活,还不够完善,前者是缓存统一操作规范,而j2cache是专注二级缓存库。原创 2022-09-04 13:59:58 · 11975 阅读 · 0 评论 -
统一缓存库jetcache和SpringBoot整合
jetcache是阿里开源缓存库的封装,它为不同的缓存解决方案提供统一的使用,它提供了比 Spring Cache 中更强大的注解。JetCache 中的注解支持原生 TTL,二级缓存,分布式环境下自动刷新,也可以Cache通过代码操作实例。目前支持本地缓存实现方式:Caffeine、LinkedHashMap。远程缓存实现:redis、tair。原创 2022-09-03 20:49:00 · 12209 阅读 · 0 评论 -
高性能本地缓存Caffeine和SpringBoot整合
Caffeine是开源的高性能本地缓存库,本地缓存优势在于单机,缺点就是无法共享数据。适合做一级缓存,redis做二级缓存。原创 2022-09-02 23:05:45 · 11614 阅读 · 0 评论 -
Spring自带缓存和缓存注解@Cacheable的使用
Spring缓存注解可以搭配本地缓存和第三方缓存中间件联合使用,Spring缓存自带缓存使用的是ConcurrentHashMap维护的Cache对象。原创 2022-09-02 18:05:03 · 11898 阅读 · 0 评论 -
MongDB安装与SpringBoot整合
MongoDB是开源高性能文档数据库,属于NoSQL的一种。数据格式没有固定,存储json数据。适用场景:前端数据库、商城用户数据存储、物联网数据存储。原创 2022-09-02 17:20:53 · 11336 阅读 · 0 评论 -
SpringBoot 空指针处理总结
DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值。@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值。@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值。@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值。@Size(max=, min=) 被注释的元素的大小必须在指定的范围内。@Past 被注释的元素必须是一个过去的日期。原创 2022-09-01 22:29:21 · 12278 阅读 · 0 评论 -
SpringBoot 日志总结
在日常开放中追踪和排查问题,使用System.out.println打印不方便管理,如输出的类,时间等。Logback:ceki首创log4j之后,又推出了logback “可靠、通用、快速而又灵活的Java日志框架”,其直接实现了SLF4J。还支持注解:@Log4j、@Log4j2、@JBossLog、@CommonsLog。SpringBoot默认门面采用:SLF4J,实现采用:logback。SLF4J:是门面的担当,本质是个空壳,用来适配各种日志。如上代码使用日志,每一个类都需要如下这段代码。...原创 2022-08-28 22:44:50 · 10571 阅读 · 0 评论 -
轻量级关系数据库SQLite的安装和SpringBoot整合
SQLite是轻量级的关系型数据库,适用于中小型应用场景:如安卓、网站、终端设备。并且轻量(服务端1M)、方便移植(只需要移动*.db文件到另外一台电脑)原创 2022-08-25 12:57:42 · 11701 阅读 · 1 评论 -
SpringBoot整合h2内存关系型数据库
H2是java开源内存关系型数据库,同时支持持久化,Windows下默认存储位置在 C:/Users/Administrator。相比mysql无需安装中间件,更轻,在某些业务场景适用。H2在SpringBoot中与内嵌的tomca形式一样,是内嵌的数据库,同时SpringBoot还提供了内嵌的数据库HSQL、Derby。原创 2022-08-24 22:29:35 · 11848 阅读 · 0 评论 -
SpringBoot 单元测试随机数据
pom.xml 引入依赖。原创 2022-08-24 21:40:34 · 11604 阅读 · 0 评论 -
SpringBoot整合Minio
application.yml 配置minio连接信息。原创 2022-08-22 21:41:14 · 11525 阅读 · 0 评论 -
SpringBoot整合FastDFS
application.yml 配置FastDFS连接信息。FastDFS操作类。测试 FastDFS。原创 2022-08-22 21:35:17 · 10958 阅读 · 0 评论 -
SpringBoot整合MybatisPlus
application.yml 配置数据库连接信息。原创 2022-08-22 21:03:15 · 11284 阅读 · 0 评论 -
SpringBoot整合Mybatis
application.yml 配置数据库连接信息。创建数据库操作类,本文采用注解版本。原创 2022-08-16 22:30:32 · 11285 阅读 · 0 评论 -
SpringBoot 单元测试整合JUnit
pom.xml 引入依赖。原创 2022-08-16 21:59:28 · 11248 阅读 · 0 评论 -
【SpringBoot教程】配置文件详细总结
配置文件优先级:application.properties > application.yml > application.yaml。临时属性指不写在配置文件,在外部启动项目添加参数。优先级高的会覆盖优先级低的配置。原创 2022-08-15 22:20:03 · 11419 阅读 · 0 评论 -
Spring Initializr私服搭建和定制化模板
SpringInitializr是Spring官方提供,用来创建SpringBoot项目的脚手架。Spring官方SpringInitializrhttpsweb版本idea版本alibaba的SpringInitializrhttpsweb版本idea版本搭建私服的意义1.个人或者团队想定制一些私有化的脚手架,如alibaba把springcloudalibaba集成到脚手架中,方便开发者创建项目,其次可以推广其它产品。2.Spring官方脚手架慢。...原创 2022-07-31 11:44:37 · 12697 阅读 · 1 评论 -
Spring和SpringBoot简介
开源轻量级的Java开发框架,提高开发效率和可维护性,Spring如今是Java杀手级的框架,Java如今依然屹立不倒Spring有很大功劳。原创 2022-07-31 11:43:29 · 13412 阅读 · 0 评论 -
【SpringBoot教程】根据环境自动装配
SpringBoot利用SPI机制实现自动装配,如项目中使用FastDFS只要引入依赖,配置会自动被实例。根据业务需求,某些服务器只使用minio、某些服务只使用fastdfs。要实现即使导入了依赖也不会自动装配,而是根据环境自动装配。...原创 2022-07-30 10:22:26 · 10582 阅读 · 0 评论 -
【Spring Web教程】SpringBoot 实现一应用多Tomcat容器
编写反向代理中间件的时候需要一个应用两个Tomcat,具体实现场景如下:一个虚拟机进程创建两个Tomcat容器:主Tomcat、从Tomcat。主Tomcat:处理前端应用请求、websocket处理从Tomcat:占用多个端口、处理多个反向代理请求。LocalCache:双Tomcat共享数据、WebSocket会话信息...原创 2022-07-27 18:07:21 · 12211 阅读 · 1 评论 -
【Spring Web教程】SpringBoot 实现一应用多端口
一应用多端口通俗来讲是指启动一个springboot项目同时监听多个端口。使用场景:1.反向代理中间件、动态网关实现。上篇文章介绍的是SpringBoot 反向代理的实现,简单接口转发可以满足,但仅仅依靠单个端口配置路由转发无法满足多域名多站点的反向代理,因为前端静态文件CSS、JS是相对路径。而多端口就能满足需求,Nginx通过多端口,实现的一个Nginx服务代理多个Web前端站点。......原创 2022-07-26 23:37:51 · 13774 阅读 · 0 评论 -
【Spring Web教程】SpringBoot 实现反向代理和轻量级网关
反向代理:客户端请求服务端,服务端通过转发隐藏真实的地址。常用解决方案:1.Nginx2.SpringCloud 中的网关Gateway、zuul3.SpringBoot整合smiley-http-proxy-servlet本文采用第三种方式,该方式在不使用任何中间件的情况实现轻量级网关。...原创 2022-07-25 23:02:45 · 13198 阅读 · 0 评论 -
【Spring Web教程】SpringBoot 整合WebSocket
WebSocket是一种服务端和网页之间的通讯协议,服务端跟网页保持着长连接,可以达到服务端主动给网页发消息的功能。//socket.send("这是来自客户端的消息"+location.href+newDate());常用场景Web聊天室、通知和紧急告警、网页消息通信、物联网通讯。//发现消息进入开始处理前端触发逻辑。3.编写WebSocket处理器路由。2.编写WebSocket处理器。"websocket发生了错误""websocket已打开""websocket已关闭"...原创 2022-07-25 21:57:44 · 11229 阅读 · 0 评论 -
【SpringSecurity教程】防止XSS攻击
XSS是跨站脚本攻击,攻击者提交可执行的恶意脚本如(html/js/css),来影响网址的使用。演示如下:模拟XSS攻击:测试效果如下:如果攻击者的恶意请求,服务器将结果保存到数据库后,下次用户查询的时候,可想而知影响很大。1.Spring设置过滤器或者拦截器2.后端设置编码转义(将标签转义如将转义成),常见解决方案有Spring的HtmlUtils和Apache Commons3.设置X-XSS-Protection请求头4.前端展示层做处理本文主要描述 Spring设置编码转义,原理是将标签转义如将原创 2022-06-11 12:20:12 · 14585 阅读 · 8 评论 -
【SpringSecurity教程】认证 3.Form表单认证
Form表单模式是SpringSecurity内置的登录页,请求接口之前先再登录页登录,虽然可以自定义页面,但是该种方式适用传统前后端不分离模式。pom.xml启动类控制层form 表单认证基本配置类测试浏览器访问:http://localhost:8080/test输入用户名:terry,密码:terry123,即可访问接口。...原创 2022-06-11 12:19:36 · 10435 阅读 · 1 评论 -
【SpringSecurity教程】认证 2.Digest摘要认证
Digest(摘要) 认证是在请求接口之前要输入账号密码,是在Basic认证传输账号密码的基础上加密pom.xml启动类控制层Digest 摘要认证基本配置类测试浏览器访问:http://localhost:8080/test输入用户名:terry,密码:terry123,即可访问接口。与Basic认证不同的是,Digest认证请求头中的数据复杂的多。...原创 2022-06-10 17:55:25 · 11023 阅读 · 0 评论 -
【SpringSecurity教程】认证 1.Basic认证
Basic 认证是在请求接口之前要输入账号密码,是简单的Http验证模式。本章主要描述:SpringBoot如何整合Basic认证、后端Okhttp和前端Vue Axios如何请求Basic认证的接口。pom.xml启动类控制层Basic基本验证配置类。测试浏览器访问:http://localhost:8080/test输入用户名:terry,密码:terry123,即可访问接口。以Okhttp为例默认情况下请求会报错401无权限,如下:OkHttpTest整合Basic如下:打印如下:...原创 2022-06-10 15:36:30 · 11724 阅读 · 0 评论 -
【SpringBoot教程 事件】3.SpringBoot自定义事件和发布订阅机制
前面讲到了SpringBoot 七个生命周期回调事件函数,SpringBoot底层是在jdk中的类和之上封装实现的发布订阅机制。同时也提供了自定义事件定义,该种方式是一种设计模式–观察者设计模式,优势在于解耦,模块和模块耦合度降低方便扩展。如下实现一个需求:注册用户,然后插入到数据库,另外还需要给用户发邮件和短信。1.创建用户注册事件基类2.用户注册,发布事件例子。3.发送短信,订阅事件例子。4.发送邮件,订阅事件例子。5.测试类,模拟用户注册。打印如下:...原创 2022-06-08 16:06:24 · 11131 阅读 · 0 评论 -
【SpringBoot教程 事件】2.SpringBoot启动成功回调
上篇讲到了SpringBoot 七个生命周期回调事件函数,SpringBoot还提供了两种接口:、,先对生命周期定义更加方便。实现ApplicationRunner接口CommandLineRunner接口实现CommandLineRunner接口ApplicationRunner和CommandLineRunner本质上差不多,唯一不同的是参数类型不一样,ApplicationRunner比CommandLineRunner参数相对灵活。打印如下:...原创 2022-06-09 07:15:00 · 11250 阅读 · 0 评论 -
【SpringBoot教程 事件】1.SpringBoot应用容器七个生命周期回调和SpringBean的生命周期总结
SpringBoot 容器有如下七种回调事件:1.Starting:SpringApplication被初始化事件。2.EnvironmentPrepared:Environment对象创建之后,Content创建之前。3.ContextInitialized:ApplicationContext初始化后,bean还没初始化。4.Prepared:bean被定义后,context对象刷新之前。5.Started:Context被刷新之后,启动器被调用之前。6.Ready:启动器调用后,整个Spri原创 2022-06-08 15:17:29 · 11261 阅读 · 0 评论 -
SpringBoot整合kafka
在SpringBoot官方对kafka的依赖没有使用starter,而是spring-kafka,如下:pom.xmlapplication.yml内容启动类测试类打印如下:原创 2022-06-08 07:45:00 · 10870 阅读 · 0 评论 -
【Spring Web教程】Java常见12种限流方式和算法总结
在用户并发量比较大的情况下,服务会发生雪崩效应:用户同时请求堆积在一个接口,导致其它的接口服务无法访问,这种效果给到用户体验不好。本章分别描述常见的限流算法。单机版本限流:计数器限流:AtomicInteger、Semaphore信号量、Semaphore控制并发量;滑动窗口限流算法;Guava令牌桶限流;漏桶限流;微服务限流方式:Alibaba Sentinel限流(底层采用滑动窗口算法);SpringCloud Hystrix限流(底层采用滑动窗口算法);网关统一设置限流;分布式限流:Redis + L原创 2022-06-06 21:16:18 · 10950 阅读 · 0 评论 -
【SpringBoot搜索】4.ElasticSearch高级查询与SpringBoot整合
ES中两种查询方式,第一种是简易查询,第二种是DSL(JSON结构化查询)。根据id获取查询语句查询结果查询所有查询结果批量查询id查询结果复杂查询查询名称是小米的查询金额在3000~4000之间查询金额在3000~4000之间、按金额排序、并且分页DSL查询DSL:传递JSON的结构化查询,相对简易更加灵活。term是分词精准查询,如下根据名字匹配。matchmatch是分词模糊匹配,如下根据名字模糊匹配。filterfilter是根据条件过滤,按条件过滤 金额 200原创 2022-06-07 08:15:00 · 10380 阅读 · 0 评论 -
【SpringBoot搜索】3.SpringBoot整合ElasticSearch
上篇文章主要描述了ES的安装和ES可视化管理工具kibana,本篇内容主要描述SpringBoot整合ES实现增删改查操作。SpringBoot 在2.0之前对ES支持不友好,只能通过EsTemplate操作ES。本文使用的是SpringBoot 2.4.2版本,对es操作如下:1.实现CrudRepository、ElasticsearchRepository接口2.ElasticsearchRestTemplate3.ElasticsearchOperations。本篇文章主要通过CrudReposit原创 2022-06-07 07:45:00 · 10411 阅读 · 0 评论 -
【SpringBoot搜索】2.Kibana安装和ElasticSearch的Crud
Kibana是ElasticSearch图形化操作系统,能够通过resultFul对ES进行增删改查。创建Kibana挂载文件编辑kibana.yml内容如下:文件授权安装Kibana安装成功后,大概等待30秒,访问地址:http://192.168.126.156:5601/进入开发工具(英文dev_tools )创建索引查询索引删除文档文档操作创建文档查询文档...原创 2022-06-07 07:30:00 · 10238 阅读 · 0 评论 -
【SpringBoot搜索】1.ElasticSearch 简介和安装
Elasticsearch是分布式全文搜索引擎,拥有分片和倒排可以高效率查询数据,数据结构是面向文档的JSON格式数据库。Elasticsearch与MySQL数据库数据结构对比:1.索引(Index) 对应MySQL的数据库2.类型(type) 对应MySQL的表3.文档(Docments) 对应MySQL的行4.字段(Fields) 对应MySQL的列应用场景:全文搜索、日志采集收集。创建ES挂载文件编辑elasticsearch.yml文件授权安装ES安装成功后,访问地址:传统数据库都是原创 2022-06-07 07:15:00 · 10305 阅读 · 0 评论 -
【SpringBoot教程 自定义Starter】3. 自定义@Enabel
SpringBoot中提供了很多Enable开头的注解,这些注解都是用于动态启用某些功能的。而其底层原理是使用@Import注解导入一些配置类,实现Bean的动态加载。如:@EnableAsync、@EnableScheduling需求:编写一个starter连接mysql的功能。使用者引入依赖,只有使用@EnableJdbc才能连上数据库。项目结构如下pom.xml创建jdbc 自动装配类创建@EnableJdbc注解创建test-starter项目故意给包名取得不一样,来验证是否能自动装配:en原创 2022-06-06 08:15:00 · 10479 阅读 · 0 评论 -
【SpringBoot教程 自定义Starter】2. @Conditional的使用和Maven provided作用域
上篇中主要讲到了简单版本自定义starter的使用。问题:依赖过多全部堆在一个starter里面,后续项目如果引入依赖会导致打包体积过大。在spring-boot-autoconfigure中,所有的自动配置类都存放在一个包下。但是最后引入starter的时候只引入了对应的依赖。如下图:在SpringBoot starter源码中使用了大量得@Conditional注解,该注解主要按条件匹配来注入bean:常见的条件初始化bean:ConditionalOnProperty:判断配置文件中是否有对应的属性和原创 2022-06-06 08:00:00 · 10381 阅读 · 0 评论 -
【SpringBoot教程 自定义Starter】1. starter简介和SpringBoot SPI
starter是SpringBoot核心之一,SpringBoot利用starter思想简化了繁琐的Maven依赖、实现热插拔技术、自动配置等。如项目使用到数据库,只需要引入到,即可。其它如:spring-boot-starter-redisspring-boot-starter-amqpspringboot 官方 starter 。自己定义的为 。SPI 机制是为了方便第三方扩展和替换。应用场景:Java JDBC:Java编写接口,而具体实现交给厂商编写数据库驱动。日志:SLF4J、Log4j。Jav原创 2022-06-06 07:45:00 · 10395 阅读 · 0 评论