mirror of
https://github.moeyy.xyz/https://github.com/GeWuYou/forgeboot
synced 2025-10-28 16:12:05 +08:00
feat(webmvc): Add an international exception handling module
- Added exception-i18n module to handle international exceptions - Reconstruct the original exception module and change it to exception-i18n - Added WebMvcExceptionAutoConfiguration class to realize automatic configuration of international exceptions - Added GlobalException and InternalException classes for global exception handling - Added GlobalExceptionHandler class to realize international global exception handling - Update the project structure and add necessary dependencies and configurations
This commit is contained in:
parent
567e7cc2b7
commit
78ca098488
3
forgeboot-webmvc/exception-i18n/.gitattributes
vendored
Normal file
3
forgeboot-webmvc/exception-i18n/.gitattributes
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
/gradlew text eol=lf
|
||||||
|
*.bat text eol=crlf
|
||||||
|
*.jar binary
|
||||||
40
forgeboot-webmvc/exception-i18n/.gitignore
vendored
Normal file
40
forgeboot-webmvc/exception-i18n/.gitignore
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
HELP.md
|
||||||
|
.gradle
|
||||||
|
build/
|
||||||
|
!gradle/wrapper/gradle-wrapper.jar
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
bin/
|
||||||
|
!**/src/main/**/bin/
|
||||||
|
!**/src/test/**/bin/
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
out/
|
||||||
|
!**/src/main/**/out/
|
||||||
|
!**/src/test/**/out/
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Kotlin ###
|
||||||
|
.kotlin
|
||||||
18
forgeboot-webmvc/exception-i18n/build.gradle.kts
Normal file
18
forgeboot-webmvc/exception-i18n/build.gradle.kts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
plugins{
|
||||||
|
alias(libs.plugins.forgeboot.i18n.keygen)
|
||||||
|
alias(libs.plugins.kotlin.plugin.spring)
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation(project(Modules.Core.EXTENSION))
|
||||||
|
api(project(Modules.I18n.STARTER))
|
||||||
|
api(project(Modules.TRACE.STARTER))
|
||||||
|
implementation(project(Modules.Webmvc.DTO))
|
||||||
|
compileOnly(libs.springBootStarter.validation)
|
||||||
|
compileOnly(libs.springBootStarter.web)
|
||||||
|
kapt(libs.springBoot.configuration.processor)
|
||||||
|
}
|
||||||
|
i18nKeyGen {
|
||||||
|
rootPackage.set("com.gewuyou.forgeboot.webmvc.extension.i18n")
|
||||||
|
readPath.set("src/main/resources/i18n/${project.name}")
|
||||||
|
level.set(3)
|
||||||
|
}
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
package com.gewuyou.forgeboot.webmvc.exception.i18n.config
|
||||||
|
|
||||||
|
import com.gewuyou.forgeboot.core.extension.log
|
||||||
|
import com.gewuyou.forgeboot.i18n.api.MessageResolver
|
||||||
|
import com.gewuyou.forgeboot.trace.api.RequestIdProvider
|
||||||
|
import com.gewuyou.forgeboot.webmvc.exception.i18n.config.entities.WebMvcExceptionI18nProperties
|
||||||
|
import com.gewuyou.forgeboot.webmvc.exception.i18n.handler.GlobalExceptionHandler
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||||
|
import org.springframework.context.annotation.Bean
|
||||||
|
import org.springframework.context.annotation.Configuration
|
||||||
|
import org.springframework.core.annotation.Order
|
||||||
|
|
||||||
|
/**
|
||||||
|
*Web MVC 异常自动配置
|
||||||
|
*
|
||||||
|
* @since 2025-05-13 11:48:01
|
||||||
|
* @author gewuyou
|
||||||
|
*/
|
||||||
|
@EnableConfigurationProperties(WebMvcExceptionI18nProperties::class)
|
||||||
|
@Configuration
|
||||||
|
class WebMvcExceptionAutoConfiguration {
|
||||||
|
/**
|
||||||
|
*默认消息解析器
|
||||||
|
*
|
||||||
|
* @since 2025-05-03 16:21:43
|
||||||
|
* @author gewuyou
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
@Order(Int.MAX_VALUE)
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
fun defaultMessageResolver(): MessageResolver = MessageResolver { code, _ -> code }
|
||||||
|
|
||||||
|
/**
|
||||||
|
*默认请求ID提供商
|
||||||
|
*
|
||||||
|
* @since 2025-05-03 16:22:18
|
||||||
|
* @author gewuyou
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
@Order(Int.MAX_VALUE)
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
fun defaultRequestIdProvider(): RequestIdProvider = RequestIdProvider { "" }
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
fun i18nGlobalExceptionHandler(
|
||||||
|
webMvcExceptionI18nProperties: WebMvcExceptionI18nProperties,
|
||||||
|
messageResolver: MessageResolver,
|
||||||
|
requestIdProvider: RequestIdProvider,
|
||||||
|
): GlobalExceptionHandler {
|
||||||
|
log.info("本地化全局异常处理程序创建成功!")
|
||||||
|
return GlobalExceptionHandler(
|
||||||
|
webMvcExceptionI18nProperties,
|
||||||
|
messageResolver,
|
||||||
|
requestIdProvider
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gewuyou.forgeboot.webmvc.exception.config.entities
|
package com.gewuyou.forgeboot.webmvc.exception.i18n.config.entities
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.webmvc.extension.i18n.I18nKeys
|
import com.gewuyou.forgeboot.webmvc.extension.i18n.I18nKeys
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gewuyou.forgeboot.webmvc.exception.core
|
package com.gewuyou.forgeboot.webmvc.exception.i18n.core
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.i18n.api.I18nResponseInformation
|
import com.gewuyou.forgeboot.i18n.api.I18nResponseInformation
|
||||||
import com.gewuyou.forgeboot.i18n.impl.exception.I18nBaseException
|
import com.gewuyou.forgeboot.i18n.impl.exception.I18nBaseException
|
||||||
@ -10,7 +10,7 @@ import com.gewuyou.forgeboot.i18n.impl.exception.I18nBaseException
|
|||||||
* @author gewuyou
|
* @author gewuyou
|
||||||
* @since 2024-11-23 16:45:10
|
* @since 2024-11-23 16:45:10
|
||||||
*/
|
*/
|
||||||
open class I18nGlobalException : I18nBaseException {
|
open class GlobalException : I18nBaseException {
|
||||||
/**
|
/**
|
||||||
* 构造函数:初始化全局异常
|
* 构造函数:初始化全局异常
|
||||||
*
|
*
|
||||||
@ -9,7 +9,7 @@ import com.gewuyou.forgeboot.i18n.api.I18nInternalInformation
|
|||||||
* @author gewuyou
|
* @author gewuyou
|
||||||
* @since 2024-11-24 21:14:03
|
* @since 2024-11-24 21:14:03
|
||||||
*/
|
*/
|
||||||
open class I18nInternalException : RuntimeException {
|
open class InternalException : RuntimeException {
|
||||||
/**
|
/**
|
||||||
* 错误信息
|
* 错误信息
|
||||||
*/
|
*/
|
||||||
@ -1,13 +1,13 @@
|
|||||||
package com.gewuyou.forgeboot.webmvc.exception.handler
|
package com.gewuyou.forgeboot.webmvc.exception.i18n.handler
|
||||||
|
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.core.extension.log
|
import com.gewuyou.forgeboot.core.extension.log
|
||||||
import com.gewuyou.forgeboot.i18n.api.MessageResolver
|
import com.gewuyou.forgeboot.i18n.api.MessageResolver
|
||||||
import com.gewuyou.forgeboot.trace.api.RequestIdProvider
|
import com.gewuyou.forgeboot.trace.api.RequestIdProvider
|
||||||
import com.gewuyou.forgeboot.webmvc.dto.I18nResult
|
import com.gewuyou.forgeboot.webmvc.dto.I18nResult
|
||||||
import com.gewuyou.forgeboot.webmvc.exception.config.entities.WebMvcExceptionI18nProperties
|
import com.gewuyou.forgeboot.webmvc.exception.i18n.config.entities.WebMvcExceptionI18nProperties
|
||||||
import com.gewuyou.forgeboot.webmvc.exception.core.I18nGlobalException
|
import com.gewuyou.forgeboot.webmvc.exception.i18n.core.GlobalException
|
||||||
import com.gewuyou.forgeboot.webmvc.exception.core.I18nInternalException
|
import com.gewuyou.forgeboot.webmvc.exception.core.InternalException
|
||||||
|
|
||||||
|
|
||||||
import jakarta.validation.ConstraintViolationException
|
import jakarta.validation.ConstraintViolationException
|
||||||
@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice
|
|||||||
* @since 2024-04-13 上午12:22:18
|
* @since 2024-04-13 上午12:22:18
|
||||||
*/
|
*/
|
||||||
@RestControllerAdvice
|
@RestControllerAdvice
|
||||||
class I18nGlobalExceptionHandler(
|
class GlobalExceptionHandler(
|
||||||
private val webMvcExceptionI18nProperties: WebMvcExceptionI18nProperties,
|
private val webMvcExceptionI18nProperties: WebMvcExceptionI18nProperties,
|
||||||
private val messageResolver: MessageResolver,
|
private val messageResolver: MessageResolver,
|
||||||
private val requestIdProvider: RequestIdProvider,
|
private val requestIdProvider: RequestIdProvider,
|
||||||
@ -129,8 +129,8 @@ class I18nGlobalExceptionHandler(
|
|||||||
* @return 返回的结果
|
* @return 返回的结果
|
||||||
* @since 2024/4/13 下午1:56
|
* @since 2024/4/13 下午1:56
|
||||||
*/
|
*/
|
||||||
@ExceptionHandler(I18nGlobalException::class)
|
@ExceptionHandler(GlobalException::class)
|
||||||
fun handleGlobalException(e: I18nGlobalException): I18nResult<String> {
|
fun handleGlobalException(e: GlobalException): I18nResult<String> {
|
||||||
return I18nResult.failure(
|
return I18nResult.failure(
|
||||||
e.errorCode, e.errorI18nMessageCode,
|
e.errorCode, e.errorI18nMessageCode,
|
||||||
null, e.errorI18nMessageArgs, messageResolver, requestIdProvider
|
null, e.errorI18nMessageArgs, messageResolver, requestIdProvider
|
||||||
@ -145,8 +145,8 @@ class I18nGlobalExceptionHandler(
|
|||||||
* @param e 异常
|
* @param e 异常
|
||||||
* @return 返回的结果
|
* @return 返回的结果
|
||||||
*/
|
*/
|
||||||
@ExceptionHandler(I18nInternalException::class)
|
@ExceptionHandler(InternalException::class)
|
||||||
fun handleGlobalException(e: I18nInternalException): I18nResult<String> {
|
fun handleGlobalException(e: InternalException): I18nResult<String> {
|
||||||
log.error("内部异常: 异常信息: {}", e.errorMessage, e)
|
log.error("内部异常: 异常信息: {}", e.errorMessage, e)
|
||||||
e.i18nInternalInformation?.responseI8nMessageCode?.let {
|
e.i18nInternalInformation?.responseI8nMessageCode?.let {
|
||||||
log.error(
|
log.error(
|
||||||
@ -0,0 +1 @@
|
|||||||
|
com.gewuyou.forgeboot.webmvc.exception.i18n.config.WebMvcExceptionAutoConfiguration
|
||||||
Loading…
x
Reference in New Issue
Block a user