Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
springboot-study
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周田
springboot-study
Commits
f3d00d84
Commit
f3d00d84
authored
May 16, 2024
by
周田
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(core): 参数校验
parent
5eb7b9a3
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
70 additions
and
8 deletions
+70
-8
pom.xml
pom.xml
+4
-4
SpringbootApplication.java
...ain/java/org/linker/springboot/SpringbootApplication.java
+1
-0
ServiceExceptionEnum.java
...org/linker/springboot/constants/ServiceExceptionEnum.java
+1
-4
UserController.java
...java/org/linker/springboot/controller/UserController.java
+17
-0
GlobalExceptionHandler.java
...rg/linker/springboot/core/web/GlobalExceptionHandler.java
+32
-0
UserVO.java
src/main/java/org/linker/springboot/vo/UserVO.java
+15
-0
No files found.
pom.xml
View file @
f3d00d84
...
...
@@ -19,10 +19,6 @@
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
...
...
@@ -30,6 +26,10 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-validation
</artifactId>
</dependency>
</dependencies>
<build>
...
...
src/main/java/org/linker/springboot/SpringbootApplication.java
View file @
f3d00d84
...
...
@@ -2,6 +2,7 @@ package org.linker.springboot;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.context.annotation.EnableAspectJAutoProxy
;
@SpringBootApplication
public
class
SpringbootApplication
{
...
...
src/main/java/org/linker/springboot/constants/ServiceExceptionEnum.java
View file @
f3d00d84
...
...
@@ -8,14 +8,11 @@ public enum ServiceExceptionEnum {
// ========== 系统级别 ==========
SUCCESS
(
0
,
"成功"
),
SYS_ERROR
(
2001001000
,
"服务端发生异常"
),
PARAM_VALIDATE_ERROR
(
2001001002
,
"参数校验错误"
),
MISSING_REQUEST_PARAM_ERROR
(
2001001001
,
"参数缺失"
),
// ========== 用户模块 ==========
USER_NOT_FOUND
(
1001002000
,
"用户不存在"
),
// ========== 订单模块 ==========
// ========== 商品模块 ==========
;
/**
...
...
src/main/java/org/linker/springboot/controller/UserController.java
View file @
f3d00d84
package
org
.
linker
.
springboot
.
controller
;
import
jakarta.validation.Valid
;
import
jakarta.validation.constraints.Min
;
import
jakarta.validation.constraints.NotNull
;
import
org.linker.springboot.constants.ServiceExceptionEnum
;
import
org.linker.springboot.core.exception.ServiceException
;
import
org.linker.springboot.core.vo.CommonResult
;
...
...
@@ -10,6 +13,7 @@ import org.linker.springboot.vo.UserVO;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.ArrayList
;
...
...
@@ -21,6 +25,7 @@ import java.util.UUID;
*/
@RestController
@RequestMapping
(
"/users"
)
@Validated
public
class
UserController
{
@Autowired
...
...
@@ -160,4 +165,16 @@ public class UserController {
logger
.
info
(
"[exception03]"
);
throw
new
ServiceException
(
ServiceExceptionEnum
.
USER_NOT_FOUND
);
}
@GetMapping
(
"/get_validate"
)
public
CommonResult
<
Integer
>
validate01
(
@NotNull
(
message
=
"参数 id 不能为空"
)
Integer
id
)
{
logger
.
info
(
"[getValidate] id: {}"
,
id
);
return
CommonResult
.
success
(
id
);
}
@PostMapping
(
"/validate"
)
public
CommonResult
<
UserVO
>
validate02
(
@Valid
@RequestBody
UserVO
userVO
)
{
logger
.
info
(
"[validate] userVO: {}"
,
userVO
.
toString
());
return
CommonResult
.
success
(
userVO
);
}
}
src/main/java/org/linker/springboot/core/web/GlobalExceptionHandler.java
View file @
f3d00d84
package
org
.
linker
.
springboot
.
core
.
web
;
import
jakarta.servlet.http.HttpServletRequest
;
import
jakarta.validation.ConstraintViolationException
;
import
org.linker.springboot.core.exception.ServiceException
;
import
org.linker.springboot.constants.ServiceExceptionEnum
;
import
org.linker.springboot.core.vo.CommonResult
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.validation.ObjectError
;
import
org.springframework.web.bind.MethodArgumentNotValidException
;
import
org.springframework.web.bind.MissingServletRequestParameterException
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
...
...
@@ -56,4 +59,33 @@ public class GlobalExceptionHandler {
ServiceExceptionEnum
.
SYS_ERROR
.
getMessage
());
}
@ResponseBody
@ExceptionHandler
(
value
=
MethodArgumentNotValidException
.
class
)
public
CommonResult
methodArgumentNotValidExceptionHandler
(
HttpServletRequest
req
,
MethodArgumentNotValidException
e
)
{
// 记录异常日志
logger
.
error
(
"[exceptionHandler]"
,
e
);
// 拼接错误
StringBuilder
detailMessage
=
new
StringBuilder
();
for
(
ObjectError
objectError
:
e
.
getAllErrors
())
{
// 使用 ; 分隔多个错误
if
(
detailMessage
.
length
()
>
0
)
{
detailMessage
.
append
(
";"
);
}
// 拼接内容到其中
detailMessage
.
append
(
objectError
.
getDefaultMessage
());
}
// 返回 ERROR CommonResult
return
CommonResult
.
error
(
ServiceExceptionEnum
.
PARAM_VALIDATE_ERROR
.
getCode
(),
ServiceExceptionEnum
.
PARAM_VALIDATE_ERROR
.
getMessage
()
+
":"
+
detailMessage
);
}
@ResponseBody
@ExceptionHandler
(
value
=
ConstraintViolationException
.
class
)
public
CommonResult
ConstraintViolationExceptionHandler
(
HttpServletRequest
req
,
ConstraintViolationException
e
)
{
// 记录异常日志
logger
.
error
(
"[exceptionHandler]"
,
e
);
// 返回 ERROR CommonResult
return
CommonResult
.
error
(
ServiceExceptionEnum
.
PARAM_VALIDATE_ERROR
.
getCode
(),
ServiceExceptionEnum
.
PARAM_VALIDATE_ERROR
.
getMessage
()
+
":"
+
e
.
getMessage
());
}
}
src/main/java/org/linker/springboot/vo/UserVO.java
View file @
f3d00d84
package
org
.
linker
.
springboot
.
vo
;
import
jakarta.validation.constraints.Min
;
import
jakarta.validation.constraints.NotNull
;
import
jakarta.validation.constraints.Size
;
/**
* 用户 VO
*/
...
...
@@ -8,10 +12,14 @@ public class UserVO {
/**
* 编号
*/
@NotNull
(
message
=
"编号不能为空"
)
@Min
(
1
)
private
Integer
id
;
/**
* 账号
*/
@NotNull
(
message
=
"账号不能为空"
)
@Size
(
min
=
4
,
max
=
10
,
message
=
"账号长度必须在 {min} - {max} 之间"
)
private
String
username
;
public
Integer
getId
()
{
...
...
@@ -32,4 +40,11 @@ public class UserVO {
return
this
;
}
@Override
public
String
toString
()
{
return
"UserVO{"
+
"id="
+
id
+
", username='"
+
username
+
'\''
+
'}'
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment