1- Log exception occurs at service layer to the database log table from @AfterThrowing advice.
2- Show a meaningful error message to the client by using @RestControllerAdvice.
Run: spring-boot-controller-advice-aspect-handle-exception > mvnw.cmd spring-boot:run
Java 11
H2 Database Engine
spring boot
spring data jpa
spring web
spring aspects
hibernate
logback
maven
junit
Method : HTTP.POST
URL : http://localhost:8080/customer/save
Request :
{
"name":"name1",
"age":1,
"addresses":[
{"streetName":"software","city":"ankara","country":"TR"}
]
}
Response :
HTTP response code 200
{
"id": 1,
"name": "name1",
"age": 1,
"addresses": [
{
"id": 1,
"streetName": "software",
"city": "ankara",
"country": "TR"
}
]
}
Method : HTTP.POST
URL : http://localhost:8080/customer/save
Request :
{
"name": null,
"age": null
}
Response :
HTTP response code 500
{
"timestamp": "2021-04-13T19:29:07.112+00:00",
"message": "not-null property references a null or transient value : com.company.customerinfo.model.Customer.age; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value : com.company.customerinfo.model.Customer.age",
"details": "uri=/customer/save"
}
Method : HTTP.GET
URL : http://localhost:8080/log/list
Input Test Data : No input, just fire the request.
Request :
{
}
Response :
HTTP response code 200
[
{
"id": 1,
"message": "org.hibernate.PropertyValueException: not-null property references a null or transient value : com.company.customerinfo.model.Customer.age"
}
]