Skip to content

Latest commit

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringBoot-rest-demo

SpringBoot+maven多模块项目常用功能集锦,主要用于rest前后端分离项目,内容取自网络和自身经验,文中如有疏漏还请指正!

本项目SpringBoot版本为2.1.3.RELEASE, 代码中会嵌入部分链接作为参考

包含示例

  1. SpringBoot+maven多模块项目配置(入口启动类demo.web.WebApplication
  2. 拦截器的使用HandlerInterceptorAdapter
  3. 统一异常处理ControllerAdvice,ExceptionHandler
  4. controller层参数校验(json参数、键值对参数、单个参数)Validated, Valid
  5. AOP记录日志Aspect
  6. 跨域访问
  7. 文件上传(拦截器控制大小限制)MultipartFile
  8. 邮件发送(结合JetBrick模板引擎)
  9. 异步任务(多线程)EnableAsync, Async
  10. 计划任务(定时任务)Scheduled
  11. 第三方接口调用RestTemplate
  12. 常用配置(见application.properties)
  13. 随机验证码生成VerifyCodeUtils

更多内容,持续更新


一些注意点:

maven模块配置

父pom.xml文件中

<groupId>demo</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>parent</name>
<!--必须指定为pom-->
<packaging>pom</packaging>
<!--指定子模块-->
<modules>
<module>web</module>
<module>service</module>
</modules>

子模块pom.xml中

<!--指定parent-->
<parent>
<groupId>demo</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--上面的三个可以直接copy父pom.xml中的内容-->
<relativePath>../pom.xml</relativePath>
</parent>

详见本项目代码

参数校验

若入参是对象,则给该对象的类加上@Validated, 注意@Valid不要漏了,否则不会生效

/** * 参数校验2,入参为json数据 * 异常类型:{@link org.springframework.web.bind.MethodArgumentNotValidException} */@PostMapping("/param1")
publicUserparam1(@Valid@RequestBodyUseruser) {
returnuser;
}
@Validated@DatapublicclassUser {
privateStringid;//用户ID@NotNull(message = "昵称不能为空")
@Size(min = 2, max = 64, message = "昵称长度必须在2-64个字符")
privateStringusername;/
@Email(message = "邮箱必须合法")
@NotNull(message = "邮箱不能为空")
privateStringemail;
}

如果User类上没加@Validated,在Controller类上加@Validated,效果是一样的,建议两个地方都加上,因为针对单个参数的校验,必须在Controller上加 @Validated

@RestController@Validated//校参注解publicclassRestfulController {
//单个参数校验@RequestMapping("/param2")
publicIntegerparam2(@Range(min = 1, max = 100, message = "age必须在1和100之间") @RequestParamIntegerage) {
returnage;
}
}

具体情况还是亲自运行看看吧

文件上传

文件上传大小限制为什么用拦截器实现呢?其实SpringBoot自带参数设置可以限制文件大小,如下:

# 上传文件单个最大值spring.servlet.multipart.max-file-size=1MB
# 上传文件总最大值spring.servlet.multipart.max-request-size=10MB

但是会有一个问题,就是当上传的文件大小超过限制时,会抛出MaxUploadSizeExceededException异常,此异常无法被ControllerAdvice捕获,故使用拦截器来判断,若你有什么更好建议,欢迎提出!

More

更多内容,持续更新,感谢支持!

About

Spring Boot 2.x+Maven多模块项目常用功能示例

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages