Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

BlueDriver/SpringBoot-rest-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

15 Commits

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")
public User param1(@Valid @RequestBody User user) {
 return user;
}
@Validated
@Data
public class User {
 private String id;//用户ID
 
 @NotNull(message = "昵称不能为空")
 @Size(min = 2, max = 64, message = "昵称长度必须在2-64个字符")
 private String username;/
 
 @Email(message = "邮箱必须合法")
 @NotNull(message = "邮箱不能为空")
 private String email;
}

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

@RestController
@Validated//校参注解
public class RestfulController {
 //单个参数校验
	@RequestMapping("/param2")
 public Integer param2(@Range(min = 1, max = 100, message = "age必须在1和100之间") @RequestParam Integer age) {
 return age;
 }
}

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

文件上传

文件上传大小限制为什么用拦截器实现呢?其实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

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /