11package org .namul .api .payload .config ;
22
3- import jakarta . validation . ConstraintViolationException ;
4- import org .namul .api .payload .error .* ;
3+ import org . namul . api . payload . code . dto . ErrorReasonDTO ;
4+ import org .namul .api .payload .error .ExceptionAdvice ;
55import org .namul .api .payload .error .configurer .ExceptionAdviceConfigurer ;
6- import org .namul .api .payload .error .exception .ServerApplicationException ;
7- import org .namul .api .payload .handler .*;
8- import org .namul .api .payload .registry .ExceptionHandlerRegistry ;
96import org .namul .api .payload .writer .FailureResponseWriter ;
107import org .namul .api .payload .writer .supports .DefaultFailureResponseWriter ;
118import org .springframework .boot .autoconfigure .AutoConfiguration ;
129import org .springframework .boot .autoconfigure .condition .ConditionalOnBean ;
13- import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
1410import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
1511import org .springframework .context .annotation .Bean ;
16- import org .springframework .web .bind .MethodArgumentNotValidException ;
17-
18- import java .util .Optional ;
1912
2013@ AutoConfiguration
2114public class ExceptionAdviceAutoConfiguration {
@@ -26,65 +19,9 @@ DefaultFailureResponseWriter defaultFailureResponseWriter() {
2619 return new DefaultFailureResponseWriter ();
2720 }
2821
29- @ Bean
30- @ ConditionalOnClass (ConstraintViolationException .class )
31- ConstraintViolationExceptionHandler constraintViolationExceptionHandler (FailureResponseWriter failureResponseWriter ) {
32- return new ConstraintViolationExceptionHandler (failureResponseWriter );
33- }
34-
35- @ Bean
36- @ ConditionalOnClass (MethodArgumentNotValidException .class )
37- MethodArgumentNotValidExceptionHandler methodArgumentNotValidExceptionHandler (FailureResponseWriter failureResponseWriter ) {
38- return new MethodArgumentNotValidExceptionHandler (failureResponseWriter );
39- }
40-
41- @ Bean
42- ServerApplicationExceptionHandler serverApplicationExceptionHandler (FailureResponseWriter failureResponseWriter ) {
43- return new ServerApplicationExceptionHandler (failureResponseWriter );
44- }
45-
46- @ Bean
47- GlobalExceptionHandler globalExceptionHandler (FailureResponseWriter failureResponseWriter ) {
48- return new GlobalExceptionHandler (failureResponseWriter );
49- }
50-
51- @ Bean
52- @ ConditionalOnMissingBean (ExceptionHandlerRegistry .class )
53- ExceptionHandlerRegistry exceptionHandlerRegistry (Optional <ConstraintViolationExceptionHandler > constraintViolationExceptionHandler ,
54- Optional <MethodArgumentNotValidExceptionHandler > methodArgumentNotValidExceptionHandler ,
55- Optional <ServerApplicationExceptionHandler > serverApplicationExceptionHandler ,
56- GlobalExceptionHandler globalExceptionHandler ) {
57- ExceptionHandlerRegistry exceptionHandlerRegistry = new ExceptionHandlerRegistry ();
58- constraintViolationExceptionHandler .ifPresent (handler -> exceptionHandlerRegistry .addHandler (ConstraintViolationException .class , handler ));
59- methodArgumentNotValidExceptionHandler .ifPresent (handler -> exceptionHandlerRegistry .addHandler (MethodArgumentNotValidException .class , handler ));
60- serverApplicationExceptionHandler .ifPresent (handler -> exceptionHandlerRegistry .addHandler (ServerApplicationException .class , handler ));
61- exceptionHandlerRegistry .addHandler (Exception .class , globalExceptionHandler );
62- return exceptionHandlerRegistry ;
63- }
64-
65- @ Bean
66- @ ConditionalOnBean (ExceptionAdviceConfigurer .class )
67- @ ConditionalOnClass (ConstraintViolationException .class )
68- ConstraintViolationExceptionAdvice constraintViolationExceptionAdvice (ExceptionAdviceConfigurer configurer ) {
69- return configurer .getConstraintViolationExceptionAdvice ();
70- }
71-
72- @ Bean
73- @ ConditionalOnBean (ExceptionAdviceConfigurer .class )
74- @ ConditionalOnClass (MethodArgumentNotValidException .class )
75- MethodArgumentNotValidExceptionAdvice methodArgumentNotValidExceptionAdvice (ExceptionAdviceConfigurer configurer ) {
76- return configurer .getMethodArgumentNotValidExceptionAdvice ();
77- }
78-
79- @ Bean
80- @ ConditionalOnBean (ExceptionAdviceConfigurer .class )
81- ServerApplicationExceptionAdvice serverApplicationExceptionAdvice (ExceptionAdviceConfigurer configurer ) {
82- return configurer .getServerApplicationExceptionAdvice ();
83- }
84-
8522 @ Bean
8623 @ ConditionalOnBean (ExceptionAdviceConfigurer .class )
87- GlobalExceptionAdvice advices (ExceptionAdviceConfigurer configurer ) {
88- return configurer . getGlobalExceptionAdvice ( );
24+ < R extends ErrorReasonDTO > ExceptionAdvice < R > exceptionAdvice (ExceptionAdviceConfigurer < R > exceptionAdviceConfigurer ) {
25+ return new ExceptionAdvice <>( exceptionAdviceConfigurer );
8926 }
9027}
0 commit comments