自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 新书推荐《从企业级开发到云原生微服务:Spring Boot 实战》

我的新书《从企业级开发到云原生微服务:Spring Boot 实战》即将出版,内容涵盖了丰富Spring Boot开发的相关知识,主要包含目录有: 第一章 初识Spring Boot(快速领略Spring Boot的美丽) 第二章 开发必备工具(对常用开发工具进行介绍:包含IntelliJ ID...

2019-08-22 17:08:22 441 3

原创 Spring Boot 2.x实战64 - Spring Data 8 - Spring Data JPA调用数据库函数/存储过程@Procedure

2.6.2 存储过程 Spring Data JPA支持使用@Procedure注解调用数据库的存储过程。 我们先定义一个存储过程,入参为name,出差为prefix_name在入参的name前加上Mr./Mrs.。 DROP PROCEDURE IF EXISTS add_name_prefix...

2020-06-01 08:11:18 21 0

原创 Spring Boot 2.x实战63 - Spring Data 7 - Spring Data JPA查询(定制查询返回Projection:接口或对象)
原力计划

2.6.1.8 Projection Spring Data JPA的查询方法一般返回的是聚合根的一个多或多个实例。我们可以使用Projection,通过聚合根的属性来定制查询返回。 我们可以使用接口来定制返回值 public interface PersonProjectionInterface...

2020-05-29 08:03:29 20 0

原创 Spring Boot 2.x实战62 - Spring Data 6 - Spring Data JPA查询(排序和分页、命名参数、修改查询)
原力计划

2.6.1.5 排序和分页 我们只需要在Repository的方法里使用Sort作为参数即可;方法接受Pageable参数即可分页也可排序。 public interface PersonRepository extends JpaRepository<Person, Long> { ...

2020-05-28 08:10:23 34 0

原创 Spring Boot 2.x实战61 - Spring Data 5 - Spring Data JPA查询(JPA命名查询、JPQL、原生SQL查询)

2.6.1.2 JPA命名查询 我们使用@NamedQuery注解在实体上来做命名查询。 @Entity @NamedQuery(name = "Person.findByNameWyf", query = "select p from Person p wh...

2020-05-27 08:12:33 22 0

原创 Spring Boot 2.x实战60 - Spring Data 4 - Spring Data JPA查询(根据实体属性名推导查询)

2.6 查询 2.6.1 查询方法 2.6.1.1 推导查询 Spring Data JPA支持方法名来中的属性来推导出查询语句。 public interface PersonRepository extends JpaRepository<Person, Long> { L...

2020-05-26 08:07:51 38 0

原创 Spring Boot 2.x实战59 - Spring Data 3 - DDD下Spring Data JPA(聚合、值对象、库的定义与使用)
原力计划

2.4 定义聚合 2.4.1 定义实体 我们使用javax.persistence.Entity注解来定实体类: @Entity public class Person {} 一个实体类会映射数据库的一张表,我们启用了spring.jpa.hibernate.ddl-auto: update,S...

2020-05-25 10:16:27 36 0

原创 Spring Boot 2.x实战58 - Spring Data 2 - Spring Boot下Spring Data JPA(自动配置)
原力计划

2.关系数据库 - Spring Data JPA 2.1 JPA、Hibernate和Spring Data JPA JPA是Java Persistence API的缩写,即Java持久化API。最新版的JPA 2.2为JSR-338规范也属于Jakarta EE的一部分。 JPA是规范,它对...

2020-05-22 10:10:38 50 0

原创 Spring Boot 2.x实战57 - Spring Data 1 - DDD与Spring Data(Repository)
原力计划

Spring Data 是一个伞型项目,包含主流的数据库的访问技术。这些不同的数据访问项目都使用相同的编程模型,他们都是基于Repository规范接口。我们在本章选关系型数据库的访问技术Spring Data JPA和NoSQL的访问Spring Data Elasticsearch。 1. S...

2020-05-20 08:10:06 52 0

原创 Spring Boot 2.x实战56 - Spring Web MVC 28 - HTTP/2应用
原力计划

我们在前面已经配置SSL和开启了HTTP/2(https://blog.csdn.net/wiselyman/article/details/106121219),我们只需要在控制器方法里的参数使用javax.servlet.http.PushBuilder对象即可使用HTTP/2的推送技术。Pu...

2020-05-19 16:11:05 31 0

原创 Spring Boot 2.x实战55 - Spring Web MVC 27 - 异步请求(HTTP Streaming - StreamingResponseBody)

我们可以通过返回StreamingResponseBody来直接使用返回的OutputStream来自己控制数据返回。我们也可以使用ResponseEntity来定制状态和头的信息。 本例使用StreamingResponseBody返回一张图片,示例控制器如下: @RestController ...

2020-05-19 16:06:16 17 0

原创 Spring Boot 2.x实战54 - Spring Web MVC 26 - 异步请求(HTTP Streaming - SSE)

Spring MVC提供了SseEmitter用来提供对W3C的SSE规范的支持。SSE是Server-Sent Events的缩写。HTML5 API 提供了EventSource对象和服务端交互,服务端返回数据时头数据里的内容类型为:text/event-stream。 我们的控制器的代码和R...

2020-05-19 16:02:05 17 0

原创 Spring Boot 2.x实战53 - Spring Web MVC 25 - 异步请求(HTTP Streaming - ResponseBodyEmitter)

5.2 HTTP Streaming DeferredResult和Callable只能异步返回单个值;如果我们想有多个异步返回的话,我们可以用HTTP Streaming来实现。 HTTP Streaming是一种推送形式的数据传输技术,它通过无限期开放的HTTP连接让web服务器(tomcat...

2020-05-19 15:58:30 26 0

原创 Spring Boot 2.x实战52 - Spring Web MVC 24 - 异步请求(Servlet 3.0 异步返回-DeferredResult)

DeferredResult的结果是由另外一个线程再稍后计算后返回给客户端的。DeferredResult的线程执行器可由CompletableFuture来定制。 同样我们在TaskService定义我们的处理: @Service @Slf4j public class TaskService ...

2020-05-19 15:53:26 16 0

原创 Spring Boot 2.x实战51 - Spring Web MVC 23 - 异步请求(Servlet 3.0 异步返回-Callable)

5. 异步请求 当一个web请求到达了Servlet容器时,Servlet线程将被阻碍直至处理执行完成。这种阻碍称为同步,我们需要通过一些方式来降低Servlet容器的负载。 5.1 Servlet 3.0 异步返回 Spring MVC支持Servlet 3.0提供的异步支持,它将web请求的处...

2020-05-19 15:48:36 17 0

原创 Spring Boot实战工具4 - Docker

4. Docker Docker是微服务部署实践的核心技术,本书的数据库软件的部署都依赖与Docker。 4.1 安装Docker Desktop Docker Desktop的下载地址: Windows:https://hub.docker.com/editions/community/doc...

2020-05-15 07:56:15 62 0

原创 Spring Boot实战工具3 - Lombok

Lombok可以通过简单的注解代替大量的模板代码,极大的提高了我们的编码效率。 3.1 开启Lombok支持 我们在IntelliJ IDEA下使用Lombok需要进行如下几步: IntelliJ IDEA 安装Lombok插件 进入插件安装界面 Windows:File->Sett...

2020-05-14 17:39:16 38 0

原创 Spring Boot实战工具2 - Gradle

2. Gradle Gradle是一个开源通用的项目构建管理系统,它的主要功能是依赖包管理和构建任务的执行。它基于Groovy语言的DSL(Domain Specific Language领域特定语言)而不是XML,使用上更灵活;构建速度更快,在大部分场景下有Maven两倍速度,某些情况下甚至有1...

2020-05-14 17:30:24 69 0

原创 Spring Boot实战工具1 - Intellij IDEA

1 IntelliJ IDEA IntelliJ IDEA是Java开发的最优秀的IDE之一。它有两个版本:社区版(Community Edition)和旗舰版(Ultimate Edition),但只有旗舰版支持Spring相关的开发,本小节以IntelliJ IDEA旗舰版进行演示(旗舰版可试...

2020-05-14 16:05:20 34 0

原创 Spring Boot 2.x实战50 - Spring Web MVC 22 - Servlet容器(配置SSL与HTTP/2)

4.2.5 配置SSL SSL全称为Secure Sockets Layer,它是建立web服务器和客户端(浏览器)之间安全连接的标准安全技术。它保证了web服务器和客户端之间传递数据保持私有和完整。 为了创建SSL连接,web服务器需要一个SSL证书。一般情况下,我们会购买证书,本例我们会通过j...

2020-05-14 15:46:10 29 0

原创 Spring Boot 2.x实战49 - Spring Web MVC 21 - Servlet容器(配置Servlet容器-常用配置)

4.2 配置Servlet容器 4.2.1 外部配置 网络配置:server.port、server.address等; 用户会话配置:server.servlet.session.*; 错误配置:server.error.*; HTTP压缩:server.compression.* ,支持ht...

2020-05-14 15:34:28 29 0

原创 Spring Boot 2.x实战48 - Spring Web MVC 20 - Servlet容器(如何注册Servlet、Filter和listener)

4. Servlet容器 Spring Boot使用的是内嵌式的Servlet容器,支持tomcat、jetty和undertow。 4.1 注册Servlet、Filter和listener Spring Boot下我们可以用多种形式注册Servlet、Filter和Listener,我们先定义...

2020-05-14 15:28:53 25 0

原创 Spring Boot 2.x实战47 - Spring Web MVC 19 - Web MVC配置(常用外部配置:静态文件目录,欢迎页,Favicon)

3.11 其他外部属性配置 3.11.1 静态文件目录 Web开发中有很多静态的文件,如:html、js、css、图片等。在Spring Boot下,下列目录都可放置静态文件: classpath:/META-INF/resources/ classpath:/resources/ classp...

2020-05-14 15:17:10 20 0

原创 Spring Boot 2.x实战46 - Spring Web MVC 18 - Web MVC配置(JSON配置)

3.10 JSON Spring MVC给我们提供了多种Json的实现,包含:Jackson、Gson、JSON-B。 Jackson使用的是MappingJackson2HttpMessageConverter,Spring Boot提供的自动配置为:JacksonAutoConfigura...

2020-05-14 15:03:40 23 0

原创 Spring Boot 2.x实战45 - Spring Web MVC 17 - Web MVC配置(路径匹配和内容协商-PathMatchConfigurer)

3.9 路径匹配和内容协商 Spring MVC中可以通过重载WebMvcConfigurer接口的configurePathMatch方法来设置路径匹配。Spring MVC为我们提供了PathMatchConfigurer来进行路径匹配配置。 public void configure...

2020-05-14 15:00:05 54 0

原创 Spring Boot 2.x实战44 - Spring Web MVC 16 - Web MVC配置(类型转换原理与设置-AnnotationFormatterFactory)

3.8.3 AnnotationFormatterFactory ​ AnnotationFormatterFactory创建Formatter来格式化标记了特殊注解的属性值。 NumberFormatAnnotationFormatterFactory使用@NumberFormat注解创建Nu...

2020-05-14 14:27:01 42 0

原创 Spring Boot 2.x实战43 - Spring Web MVC 15 - Web MVC配置(类型转换原理与设置-Converter和ConverterFactory)

3.8 类型转换原理与设置 Spring为我们提供了ConversionService接口用来做类型转换,它是Spring类型转换系统的入口。像我们注册的Formatter的FormattingConversionService类就是它的实现类。 FormattingConversionServi...

2020-05-14 14:15:30 31 0

原创 Spring Boot 2.x实战42 - Spring Web MVC 14 - Web MVC配置(初始化数据绑定设置-ConfigurableWebBindingInitializer)

3.7 初始化数据绑定设置 Spring MVC可以让我们配置ConfigurableWebBindingInitializer 的Bean来初始化WebDataBinder对象,这也意味着前面对于PropertyEditor、Formatter和Validator可以用现在这种方式来设置。初始化...

2020-05-14 14:04:46 17 0

原创 Spring Boot 2.x实战41-SpringWebMVC13-WebMVC配置(控制器方法参数和返回值处理设置-AbstractMessageConverterMethodProcessor)

3.6.2 示例2 我们再模仿@RequestBody和@ResponseBody的实现原理做一个简单的示例。 请求体注解: @Target({ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented publi...

2020-05-14 13:56:58 30 0

原创 Spring Boot 2.x实战40 - Spring Web MVC 12 - Web MVC配置(控制器方法参数和返回值处理设置-使用HandlerMethodArgumentResolver)

3.6 方法参数和返回值处理设置 在控制器方法里,我们可以使用@RequestBody、RequestEntity获得请求体里的数据,使用@ResponseBody、ResponseEntity对返回体进行处理。 在Spring MVC中可以通过实现HandlerMethodArgumentRes...

2020-05-13 13:35:39 21 0

原创 Spring Boot 2.x实战39 - Spring Web MVC 11 - Web MVC配置(HttpMessageConverter)

3.5 HttpMessageConverter 在Spring MVC中请求(@RequestBody、RequestEntity等)和返回(@Responsebody、ResponseEntity等)都是通过HttpMessageConverter来实现数据转换的。 外部的请求数据通过Http...

2020-05-12 17:37:44 34 0

原创 Spring Boot 2.x实战38 - Spring Web MVC 10 - Web MVC配置(Formatter)

3.4 Formatter org.springframework.format.Formatter是Spring提供用来替代PropertyEditor的,PropertyEditor不是线程安全的,每个web请求都会通过WebDataBinder注册创建新的PropertyEditor实例,而...

2020-05-12 17:34:44 24 0

原创 Spring Boot 2.x实战37 - Spring Web MVC 9 - Web MVC配置(Interceptor)

3.3 Interceptor Servlet提供了filter(过滤器)来预处理和后处理每一个web请求,Spring MVC也提供了Interceptor(拦截器)来预处理和后处理每一个web请求,它的优势是能使用IoC容器的一些功能。Interceptor接口有三个方法: preHandl...

2020-05-12 17:32:24 24 0

原创 Spring Boot 2.x实战36 - Spring Web MVC 8 - Web MVC配置(原理及如何配置)
原力计划

3.1 Spring MVC的工作原理 我们学习Spring MVC的REST支持的原理应通过DispatchServlet出发,在Spring Boot中通过DispatcherServletAutoConfiguration定义DispatcherServlet的Bean,并通过Dispatc...

2020-05-12 17:29:30 41 0

原创 Spring Boot 2.x实战35 - Spring Web MVC 7 - RestTemplate

我们可以使用RestTemplate作为客户端来访问其他应用提供的RESTful服务。前面的演示中我们都使用Postman或者浏览器,我们可以使用RestTemplate作为客户端完成同样的功能。 我们新建客户端类PersonClient,内容如下: @Component public class...

2020-05-12 17:25:11 31 0

原创 Spring Boot 2.x实战34 - Spring Web MVC 6 - Json定制

2.5 Json定制 前面我们使用了Jackson的注解@JsonView来定制返回视图,这节我们使用Jackson提供的注解对序列化(将Java对象转换成json,用于返回体的定制)和反序列化(Json转成Java对象,用于请求体的定制)进行更细节的设置。 我们定义一个Java类来作为演示: @...

2020-05-12 17:22:24 24 0

原创 Spring Boot 2.x实战33 - Spring Web MVC 5 - @JsonView

2.4.2 @JsonView Spring MVC支持Jackson的@JsonView注解来定制请求体和返回体的json。这个功能的实现和上一节@RestControllerAdvice例子类似,是通过JsonViewRequestBodyAdvice,JsonViewResponseBody...

2020-05-12 17:16:30 21 0

原创 Spring Boot 2.x实战32 - Spring Web MVC 4 - @RestControllerAdvice

@RestControllerAdvice是组合注解,它组合了@ControllerAdvice和@ResponseBody,它的功能和@ControllerAdvice一致,主要使用于对RESTful的请求体和返回体进行定制处理。 2.4.1 先处理请求体与后处理返回体 对请求体定制处理实现Re...

2020-05-12 17:10:30 26 0

原创 Spring Boot 2.x实战31 - Spring Web MVC 3 - @ControllerAdvice

2.3 @ControllerAdvice @ControllerAdvice注解一个特殊的Bean组件,顾名思义它负责所有控制器共享的功能,如异常处理(配合@ExceptionHandler)、数据绑定(配合@InitBinder)等。@ControllerAdvice通过属性指定起效的控制器范...

2020-05-12 17:05:10 16 0

原创 Spring Boot 2.x实战30 - Spring Web MVC 2 - RESTful服务(实战)

下面使用Spring MVC开发一个标准的RESTful服务的示例。我们的资源是一个叫Person的领域模型。 @Getter @Setter @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(exclude = {"na...

2020-05-12 16:49:41 42 0

提示
确定要删除当前文章?
取消 删除