随笔分类 - 【SpringBoot / Cloud系列 】
摘要:有时一些特殊的任务需要在系统启动时执行,例如配置文件加载、数据库初始化等操作。Spring Boot 提供了两种解决方案:CommandLineRunner 和 ApplicationRunner。二者使用方式大体一致,差别主要体现在参数上。一、使用 CommandLineRunner 1,基本介绍
阅读全文
摘要:Spring MVC 中提供了 AOP 风格的拦截器,拥有更加精细的拦截处理能力。Spring Boot 中拦截器的注册与使用更加方便,下面通过样例进行演示。 1,创建拦截器 首先我们实现 HandlerInterceptor 接口自定义一个拦截器 MyInterceptor1,内容如下: (1)拦
阅读全文
摘要:一、基本用法 1,基本介绍 Spring Boot 推荐使用 java 配置完全代替 XML 配置,java 配置是通过 @Configration 和 @Bean 注解实现的。二者作用如下: @Configration 注解:声明当前类是一个配置类,相当于 Spring 中的一个 XML 文件 @
阅读全文
摘要:前文提到的两种自定义 Error 数据、Error 视图的方式都是对 BasicErrorController 类中的某个环节进行修补。如果需要更加灵活地对 Error 视图和数据进行处理,可以通过继承 BasicErrorController 来实现自己的 ErrorController。 三、高
阅读全文
摘要:二、简单地自定义 Error 数据、Error 视图 1,自定义 Error 数据 我们知道 Spring Boot 返回的错误信息一共 5 条,分别是:timestamp、status、error、message、path。如果需要增加自定义的错误信息,只需要自定义一个 ErrorAttribut
阅读全文
摘要:在之前的文章中我介绍了如何使用 @ControllerAdvice 来进行全局异常处理,但是这种异常处理方式一般用来处理应用级别的异常,一些容器级别的错误就处理不了,比如 Filter 中抛出的异常。因此,Spring Boot 中对于异常的处理还有另外的方式。 比如默认情况下,当我们通过 Post
阅读全文
摘要:七、Lombok注解详解(4) 12,@log (1)该注解用在类上,可以省去从日志工厂生成日志对象这一步,直接进行日志记录,具体注解根据日志工具的不同而不同。不同的日志注解总结如下(上面是注解,下面是实际作用): 我们也可以在注解中使用 topic 来指定生成 log 对象时的类名。 @Commo
阅读全文
摘要:六、Lombok 注解详解(3) 8,@Data (1)@Data 是一个复合注解,用在类上,使用后会生成:默认的无参构造函数、所有属性的 getter、所有非 final 属性的 setter 方法,并重写 toString、equals、hashcode 方法。 import lombok.Da
阅读全文
摘要:五、Lombok 注解详解(2) 5,@NoArgsConstructor 注解在类上,为类提供一个无参的构造方法。 注意: 当类中有 final 字段没有被初始化时,编译器会报错,此时可用 @NoArgsConstructor(force = true),然后就会为没有初始化的 final 字段设
阅读全文
摘要:四、Lombok 注解详解(1) 1,@Setter 和 @Getter (1)这两个注解用于生成 setter 和 getter 方法,可以用在类或者属性上: 如果用在属性上:则只为该属性提供 setter 和 getter 方法 如果是用在类上:则为这个类所有属性供 setter 和 gette
阅读全文
摘要:我们创建 POJO 类时,经常需要先写属性,然后手写或者自动生成 get 和 set 方法,然后还要重写 toString 方法....一系列操作下来,这个 POJO 类便会产生太多的样板式代码。 这种传统的方式不仅使得代码十分臃肿,有时也不方便维护,比如:当变量名或者是修饰符改变了,我们就要删除
阅读全文
摘要:在前文中我介绍了 Controller 如何接收通过 GET 方式传递过来的参数,下面接着演示如何接收通过 POST 方式传递过来的参数。 一、接收 Form 表单数据 1,基本的接收方法 (1)下面样例 Controller 接收 form-data 格式的 POST 数据: import org
阅读全文
摘要:利用 Spring Boot 来制作 Web 应用,就必定会涉及到前端与后台之间互相传递参数。下面演示 Controller 如何接收以 GET 方式传递过来的参数。 一、参数直接在路径中 (1)假设请求地址是如下这种 RESTful 风格,hangge 这个参数值直接放在路径里面: http://
阅读全文
摘要:我们知道无论是 Get 请求还是 Post 请求,Controller 这边都可以定义一个实体类来接收这些参数。而 @ControllerAdvice 结合 @InitBinder 还能实现请求参数预处理,即将表单中的数据绑定到实体类上时进行一些额外处理。 三、请求参数预处理(搭配 @InitBin
阅读全文
摘要:二、添加全局数据(搭配 @ModelAttribute) 1,设置全局数据 (1)@ControllerAdvice 是一个全局数据处理组件,因此也可以在 @ControllerAdvice 中配置全局数据,使用 @ModelAttribute 注释进行配置。(1)这里我们在全局配置中添加了两个方法
阅读全文
摘要:顾名思义,@ControllerAdvice 就是 @Controller 的增强版。@ControllerAdvice 主要用来处理全局数据,一般搭配 @ExceptionHandler、@ModelAttribute、@InitBinder 使用。下面分别进行介绍。 一、全局异常处理(搭配 @E
阅读全文
摘要:在前文中我介绍了 Spring Boot 项目如何实现单文件上传,而多文件上传逻辑和单文件上传基本一致,下面通过样例进行演示。 二、多文件上传 1,代码编写 (1)首先在 static 目录中创建一个 uploads.html 文件,内容如下: <!DOCTYPE html> <html lang=
阅读全文
摘要:Spring Boot 对文件上传做了简化,基本做到了零配置,我们只需要在项目中添加 spring-boot-starter-web 依赖即可。 一、单文件上传 1,代码编写 (1)首先在 static 目录中创建一个 upload.html 文件,内容如下: <!DOCTYPE html> <ht
阅读全文
摘要:在开发前后端分离的项目时,常常会碰到跨域请求的问题。即由于浏览器的安全性限制,不允许 AJAX 访问协议不同、域名不同、端口号不同的数据接口,否则会出报 No 'Access-Control-Allow-Origin' header is present on the requested resou
阅读全文
摘要:一、默认静态资源访问策略 (1)当我们使用 IntelliJ IDEA 创建 Spring Boot 项目,会默认创建 classpath:/static/ 目录,我们直接把静态资源放在这个目录下即可。 (2)我们直接在浏览器中输入“http://localhost:8080/1.png”即可看到我
阅读全文