package io.jot.memento;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
import java.util.List;
import java.util.Map;
@Configuration
public class Config{
@Bean
public ExceptionHandlerExceptionResolver exceptionHandlerExceptionResolver(){
ExceptionHandlerExceptionResolver exceptionHandlerExceptionResolver = new ExceptionHandlerExceptionResolver();
exceptionHandlerExceptionResolver.setMessageConverters(List.of(new MappingJackson2HttpMessageConverter()));
return exceptionHandlerExceptionResolver;
}
@ControllerAdvice
static class MyExceptionHandler{
@ExceptionHandler
@ResponseBody
public Map<String, Object> exceptionHandler(Exception exception){
return Map.of("error", exception.getMessage());
}
}
}
package io.jot.memento;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
import java.nio.charset.StandardCharsets;
public class Venal{
public static void main(String[] args) throws NoSuchMethodException{
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
ExceptionHandlerExceptionResolver exceptionResolver = context.getBean(ExceptionHandlerExceptionResolver.class);
HandlerMethod handlerMethod = new HandlerMethod(new Controller(), Controller.class.getMethod("jot"));
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
Exception exception = new Exception("error!!!!!!!");
exceptionResolver.resolveException(request, response, handlerMethod, exception);
System.out.println("\033[37;7m>>>>>> " + new String(response.getContentAsByteArray(), StandardCharsets.UTF_8) + " <<<<<<\033[0m");
}
static class Controller{
public void jot(){
}
}
}
