史上最详 Thymeleaf 使用教程
一、前言
二、基础语法
三、内联
四、模板布局
五、预定义的工具对象
六、小结
七、代码示例
八、参考文献
一、前言
操作前建议先参考w3xue的thymeleaf教程:Boot Thymeleaf初步使用 和 Boot Thymeleaf高级...[2019/9/17]
Spring Boot非Web项目运行配置的方法教程
现在有一个非web项目: 比如一个kafka的消费端, 监听某个消息topic, 并处理对应的消息通过其他api发送通知或者短信给相关人员. 这时候想使用Spring Boot运行, 但又不需要依赖web, tomcat, jdbc这些
依赖如下:
<dependency&g...[2019/9/11]
Springboot源码分析之TargetSource
摘要:
其实我第一次看见这个东西的时候也是不解,代理目标源不就是一个cla 嘛还需要封装干嘛。。。
其实proxy代理的不是target,而是TargetSource,这点非常重要,一定要分清楚!!!
通常情况下,一个代理对象只能代理一个target,每次方法调用的目标也是唯一固定的...[2019/8/27]
SpringBoot:高并发下浏览量入库设计
一、背景
文章浏览量统计,low的做法是:用户每次浏览,前端会发送一个GET请求获取一篇文章详情时,会把这篇文章的浏览量+1,存进数据库里。
1.1 这么做,有几个问题:
在GET请求的业务逻辑里进行了数据的写操作!
并发高的话,数据库压力太大;
同时,如果文章做...[2019/8/27]
SpringBoot怎么处理跨域请求
一、跨域背景
1.1 何为跨域?
Url的一般格式:
协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址
示例:
https: www.dustyblog.cn:8080 ay/Hello 是由
https + www + dustyblog.cn + ...[2019/8/26]
Spring Boot异步输出Logback日志方法详解
一、介绍
1.1 Logback
Logback是由log4j创始人设计的另一个开源日志组件,它分为下面下个模块:
logback-core:其它两个模块的基础模块
logback-cla ic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可...[2019/8/26]
Spring Boot配置AOP打印日志的全过程
前言
在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码。
一、Spring AOP
AOP(Aspect-Oriented Programming,面向切面编程),它利用一种"横切"的技...[2019/8/26]
Spring Boot统一Restful API返回值格式与处理异常
统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下: public cla Result<T> {
...[2019/8/22]
Spring Boot 统一异常这样处理和剖析,安否?
话说异常
「欲渡黄河冰塞川,将登太行雪满天」,无论生活还是计算机世界难免发生异常,上一篇文章RESTful API 返回统一JSON数据格式 说明了统一返回的处理,这是请求一切正常的情形;这篇文章将说明如何统一处理异常,以及其背后的实现原理,老套路,先实现,后说明原理,有了上一篇文章...[2019/8/20]
详解Spring Boot最核心的27个注解
导读
Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成。
而Spring Boot之所以能够轻松地实现应用的创建及与其...[2019/8/14]
springboot整合redis(代码干货)
Redis 简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 优势
性能极高 – Redis能读的速度是110000次 ,写的速度是81000次 。
丰富的数据类型 – Redis支持二进...[2019/7/29]
Spring Boot接口设计防篡改、防重放攻击详解
本示例主要内容
请求参数防止篡改攻击
基于timestamp方案,防止重放攻击
使用swagger接口文档自动生成
API接口设计
API接口由于需要供第三方服务调用,所以必须暴露到外网,并提供了具体请求地址和请求参数,为了防止被别有用心之人获取到真实请求...[2019/7/29]
如何优雅关闭 Spring Boot 应用
前言
随着线上应用逐步采用 SpringBoot 构建,SpringBoot应用实例越来多,当线上某个应用需要升级部署时,常常简单粗暴地使用 kill 命令,这种停止应用的方式会让应用将所有处理中的请求丢弃,响应失败。这样的响应失败尤其是在处理重要业务逻辑时需要极力避免的,那么有什么更...[2019/7/25]
关于spring boot中几种注入方法的一些个人看法
前言
最近在知乎上面看到一篇关于程序员面试的问题,面试官问我们一般有几种注入的方法,这几种注入的方法分别在什么时候运用比合理,当时我看到这个时候懵逼了,由于我自己也是刚刚接触springboot不久,所以就自己在平时运用的上面总结了一些知识点常用的几种springboot的注入方法,由于我是一...[2019/7/22]
spring boot实现验证码功能spring boot实现验证码功能
本文实例为大家分享了spring boot实现验证码功能的具体代码,供大家参考,具体内容如下
流程是按照交互顺序。
1.controller层代码,获取验证码,以及生成验证码图片。
1.1获取html
@RequestMapping(value="/authImage",m...[2019/7/18]
SpringBoot事务Transaction实战讲解教程SpringBoot事务Transaction实战讲解教程
前言
本篇文章主要介绍的是SpringBoot的事务Transaction使用的教程。
SpringBoot Transaction
说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码。
Transaction
事务管理方式
在Spring中,事务有两种实现方式,分...[2019/7/15]
聊聊spring boot的WebFluxTagsProvider的使用
序
本文主要研究一下webflux的WebFluxTagsProvider
WebFluxTagsProvider
spring-boot-actuator-2.1.5.RELEASE-sources.jar!/org pringframework/boot/actuate/m...[2019/7/12]
关于Spring Boot你不得不知道的事
1 Pom文件
1.1 spring-boot-starter-parent
表示当前pom文件从spring-boot-starter-parent继承下来,在spring-boot-starter-parent中提供了很多默认配置,可以简化我们的开发。
<parent>
...[2019/6/21]
Spring Boot+MyBatis+MySQL读写分离
读写分离要做的事情就是对于一条sql语句该选择去哪个数据库执行,至于谁来做选择数据库的事情,无非两个,1:中间件(比如MyCat);二:程序自己去做分离操作。
但是从程序成眠去做读写分离最大的弱点就是无法的动态去增加数据库节点,因为数据源配置都是卸载配置中的,新增数据库意味着新加一个数据...[2019/6/18]
SpringBoot整合Swagger和Actuator
前言
本篇文章主要介绍的是SpringBoot整合Swagger(API文档生成框架)和SpringBoot整合Actuator(项目监控)使用教程。
SpringBoot整合Swagger
说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码。
Swagger 介绍
...[2019/6/18]
Spring Boot处理全局统一异常的两种方法与区别Spring Boot处理全局统一异常的两种方法与区别
前言
在后端发生异常或者是请求出错时,前端通常显示如下
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback....[2019/6/12]
Mybatis插件的开发经验
前言
MyBatis开放用户实现自己的插件,从而对整个调用过程进行个性化扩展。
这是MyBatis整个调用流程的主要参与者。
我们可以对其中的一些过程进行拦截,添加自己的功能,比如重写Sql添加分页参数。
拦截的接口
MyBatis允许拦截的接口如下
Executor...[2019/6/11]
springboot整合dubbo的简单案例springboot整合dubbo的简单案例
使用框架:
jdk 1.8
springboot-2.1.3
dubbo-2.6
spring-data-jpa-2.1.5
一、开发dubbo服务接口:
按照Dubbo官方开发建议,创建一个接口项目,该项目只定义接口和model类;
1、创...[2019/6/6]
Spring boot下,集成任务调度中心(XXL-JOB)
一、使用背景
目前项目中,采用的是微服务框架,由于在微服务中,存在需要定时的任务。但如果定时任务维护在每个微服务下,当微服务部署多个实例的情况下,会出现定事任务多次执行的情况。并且在解决问题的基础上,希望能够实现动态修改任务的定时时间,可以通过页面对定时任务进行控制。
二、XXL-JOB简...[2019/6/6]
SpringBoot2.0 整合 QuartJob ,实现定时器实时管理
一、QuartJob简介
1、一句话描述
Quartz是一个完全由java编写的开源作业调度框架,形式简易,功能强大。
2、核心API
(1)、Scheduler
代表一个 Quartz 的独立运行容器,Scheduler 将 Trigger 绑定到特定 JobDetail, 这样当 Trigg...[2019/6/6]
Spring Boot中使用RSocket的示例代码
1. 概述
RSocket 应用层协议支持 Reactive Streams 语义, 例如:用RSocket作为HTTP的一种替代方案。在本教程中, 我们将看到 RSocket 用在spring boot中,特别是spring boot 如何帮助抽象出更低级别的RSocke...[2019/6/6]
SqlHelper发布——比你期望的还要多的多(例如比MyBatis-Pagehelper性能更高)
SqlHelper发布——比Mybatis-PageHelper性能更高
起源
前段时间开启了一个新的项目,在选择分页插件时,发现github上很流行的一个是pagehelper,在百度上搜索了一下,使用量。由于项目紧急,所先拿来用了。但是我知道它并不适合我们。原因是...[2019/6/4]
SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件
一、JavaMail的核心API
1、API功能图解
2、API说明
(1)、Me age 类:
javax.mail.Me age 类是创建和解析邮件的一个抽象类
子类javax.mail.internet.MimeMe age :表示一份电子邮件。
发送邮件时,首先创建出封装...[2019/6/4]
SpringBoot 2.0 整合sharding-jdbc中间件,实现数据分库分表
一、水平分割
1、水平分库
1)、概念:
以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。
2)、结果
每个库的结构都一样;数据都不一样;
所有库的并集是全量数据;
2、水平分表
1)、概念
以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。
2)、结果
...[2019/6/4]
Spring boot集成spring session实现session共享的方法Spring boot集成spring session实现session共享的方法
最近使用spring boot开发一个系统,nginx做负载均衡分发请求到多个tomcat,此时访问页面会把请求分发到不同的服务器,se ion是存在服务器端,如果首次访问被分发到A服务器,那么se ion就会被存到A服务器,再次访问时负载均衡会分发到B服务器那么第一次访问的se ion信息就会获...[2019/6/4]
springboot快速集成swagger
今天技术总监说:小明,我们本次3.0改造,使用swagger2.0作为前后端分离的接口规范,它可以一键生成前后端的API,一劳永逸……小明:???
Spring Boot 框架是目前非常流行的微服务框架,我们很多情况下使用它来提供 Rest API,而对于 Rest API 来说很重要...[2019/6/3]
thymeleaf公共页面元素抽取
1、抽取公共片段
使用thymeleaf的th:fragment为样抽取的公共片段命名,
如下把div标签命名为 copy,就可以获取到div整个里的内容<div th:fragment="copy"> © 2011 The Good Thymes Virt...[2019/5/31]
Spring Boot实现STOMP协议的WebSocket的方法步骤
1.概述
我们之前讨论过Java Generics的基础知识。在本文中,我们将了解Java中的通用构造函数。 泛型构造函数是至少需要有一个泛型类型参数的构造函数。我们将看到泛型构造函数并不都是在泛型类中出现的,而且并非所有泛型类中的构造函数都必须是泛型。
2.非泛型类
首先,先...[2019/5/31]
在Linux系统上安装Spring boot应用的教程详解
Unix/Linux 服务
systemd 服务
操作过程
1. 安装了JDK的centOS7虚拟机
注意下载linux版本JDK的时候不能直接通过wget这种直接链接下载,否则会解压不成功,应该打开原官网,点击同意许可后点击下载(这种方式下载很慢),比较好的方式是复制下载页的地址...[2019/5/31]
SpringBoot项目实现文件上传和邮件发送
前言
本篇文章主要介绍的是SpringBoot项目实现文件上传和邮件发送的功能。
SpringBoot 文件上传
说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码。
开发准备
环境要求
JDK:1.8
SpringBoot:1.5.9.RELEASE
首...[2019/5/30]
springboot2.0和springcloud Finchley版项目搭建(包含eureka,gateWay,Freign,Hystrix)
前段时间spring boot 2.0发布了,与之对应的spring cloud Finchley版本也随之而来了,两者之间的关系和版本对应详见我这边文章:spring boot和spring cloud对应的版本关系
项目地址:spring-cloud-demo
spring boot ...[2019/5/29]
SpringBoot优雅的全局异常处理
前言
本篇文章主要介绍的是SpringBoot项目进行全局异常的处理。
SpringBoot全局异常准备
说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码。
开发准备
环境要求
JDK:1.8
SpringBoot:1.5.17.RELEASE
首先还是Ma...[2019/5/28]
springboot使用Mybatis(xml和注解)全解析
刚毕业的第一份工作是 java 开发,项目中需要用到 mybatis,特此记录学习过程,这只是一个简单 demo,mybatis 用法很多不可能全部写出来,有更复杂的需求建议查看 mybatis 的官方中文文档,点击跳转。下面时项目环境/版本。
开发工具:IDEA
jdk 版本:1.8
...[2019/5/27]
Spring Boot 项目创建的详细步骤(图文)
一. 简单介绍一下Spring Boot
世界惯例,在学习一个框架之前,我们需要了解一下这个框架的来历。
下面我们引用一下百度百科的解释。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来...[2019/5/16]
详解在spring boot中消息推送系统设计与实现详解在spring boot中消息推送系统设计与实现
推送系统作为通用的组件,存在的价值主要有以下几点
会被多个业务项目使用,推送系统独立维护可降低维护成本
推送系统一般都是调用三方api进行推送,三方api一般会有调用频率/次数限制,被推送的消息需要走队列来合理调用三方api,控制调用的频率和次数
业务无关,一般推送系统设计成...[2019/5/7]
Spring Boot
SpringBoot的优点
简化配置
下一代Java Web框架
微服务的入门级微框架
课程目录
开发第一个SpringBoot程序
自定义属性配置
Controller的使用
spring-data-jpa(用于操作数据库,很方便)
事务管理(数据库)
结果: 可以开发一个小...[2019/5/5]
Spring Boot 数据校验@Valid+统一异常处理的实现
1.先在你需要校验的实体类上面加上所需要的注解
为了测试,我自己就简单写了。@NotNull 和 @NotBlank 不能为空
@Entity
@Table(name = "User")
@Data
public cla User implements Seri...[2019/4/30]
SpringBoot整合Spring Security使用DemoSpringBoot整合Spring Security使用Demo
https: tart.spring.io/ 生成SpringBoot项目
pom文件应该是我这样的:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http: maven.ap...[2019/4/23]
基于Springboot集成security、oauth2实现认证鉴权、资源管理
1、Oauth2简介
OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了...[2019/4/23]
SpringBoot 基础:如何进行数据访问
一、引言
大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有MongoDB,Redis。
用spring开发时我们常用的ORM框架有JDBC、Mybatis...[2019/4/23]
详解Spring Boot 中实现定时任务的两种方式
在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Quartz ,Spring Boot 源自 Spring+SpringMVC ,因此天然具备这两个 S...[2019/4/19]
spring boot 默认异常处理的实现spring boot 默认异常处理的实现
本周在看陈杰写的自定义异常的微信异常时,使用的是自定义异常状态码和信息,在出错时将他抛出,并用@ExceptionHandler注解定义一个全局异常处理器,根据异常的内容向前台发送状态码和信息,处理异常的代码如下图:
处理微信登录的异常
@ExceptionHandler(va...[2019/4/15]
spring boot+自定义 AOP 实现全局校验的实例代码
最近公司重构项目,重构为最热的微服务框架 spring boot, 重构的时候遇到几个可以统一处理的问题,也是项目中经常遇到,列如:统一校验参数,统一捕获异常。。。
仅凭代码 去控制参数的校验,有时候是冗余的,但通过框架支持的 去控制参数的校验,是对于开发者很友好,先看下面的例子
...[2019/4/10]
Spring Boot 中的静态资源放置位置
当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:“松哥,我的HTML页面好像没有样式?”,今天我就通过一篇文章,来和大伙仔细聊一聊这个问题。
SSM 中的配置
要讲 Spring Boot...[2019/4/4]
spring boot基于Java的容器配置讲解
spring容器是负责实例化、配置、组装组件的容器。
容器的配置有很多,常用的是xml、Java注解和Java代码。
在spring中Ioc容器相关部分是context和beans中。其中context-support保存着许多线程的容器实现。比如AnnotationConfigAppli...[2019/4/3]