본문 바로가기

Spring10

로컬과 운영서버에서 BindingError 메세지가 다르다? DevTools Property 필자는 SpringBoot 2.3.x 버전 환경에서 로컬과 운영, 개발환경에서 바인딩 에러 메세지 처리에 대한 동작이 다른것을 발견했다. 바인딩 에러처리에 대한 설명은 이전 글 참조(granger.tistory.com/69) Spring Boot 2.3.x 에러페이지 BindingException 처리에 대한 ErrorAttibutes 변화 스프링 부트 2.3 버전 부터는 에러처리에 대한 메시지 정책이 변경되었다. 버전 변화로 인해 디폴트로 더이상 BindingExcption 대해서 발생원인에 대한 많은정보를 담고 있는 정보를 메세지에 담아서 granger.tistory.com 잘못 배포되어 코드가 다른가 Jar를 확인해보니 같았다. 어떻게 된것일까? 디버깅과 로깅을 통해 문제의 원인을 분석하던중(nar.. 2021. 1. 30.
Spring Boot 2.3.x 에러페이지 BindingException 처리에 대한 ErrorAttibutes 변화 스프링 부트 2.3 버전 부터는 에러처리에 대한 메시지 정책이 변경되었다. 버전 변화로 인해 디폴트로 더이상 BindingExcption 대해서 발생원인에 대한 많은정보를 담고 있는 정보를 메세지에 담아서 보내지 않는다. 이에 대한 에러메세지에 대한 처리는 ErrorController -> DefaultErrorAttributes 에서 처리하고 있다. 에러처리를 ControllerAdvice, RestControllerAdvice 같은 별도의 에러처리를 사용하지 않는다면 embed tomcat까지 에러처리를 전파하게 되고 ErrorController에서 에러처리를 하게 된다. 친철하게 설명하고 있지 않지만 예전에 올려둔 아래 글을 참고하면 좋겠다. (개인 기록용으로 작성된 글이었다) granger.tis.. 2021. 1. 29.
Spring Boot 기존 요청 스레드 처리하고 안전하게 종료하기 일반적으로 리눅스 환경에서 스프링 부트를 종료시킬때 kill -9 [PID] 명령어로 많이 사용하는것을 주위에서 보았다. 하지만 이 명령어로 사용하게 되면 처리중인 쓰레드 처리는 강제로 종료하게 되므로 권장하지 않는다. (Spring Boot 2.3 version 부터는 안전하게 종료하도록(graceful shutdown 지원이 된다고 한다.) 기존 쓰레드를 처리하고 안전하게 종료할 수 있는 방법 (Embedded Tomcat) public class ShutDownCustom implements TomcatConnectorCustomizer, ApplicationListener { private static final Logger log = LoggerFactory.getLogger(ShutDownCu.. 2020. 1. 16.
Spring Boot - 등록된 Bean 객체 사용하기 빈으로 등록하지 않아 스피링 빈으로 주입하지 않은 객체을 생성할때 Bean 에 등록된 객체를 불러오고 싶을때가 있다. 그럴경우 ApplicationContextAware 인터페이스를 구현한 클래스를 빈으로 등록하여 사용하면 된다. 이런식으로 유틸로도 활용할 수 있다. 2019. 12. 17.
2) Spring Boot Validation - Custom Annotation Annotation을 만들어서 서버에 요청받았을때 유효성 검증을 하고 원하는 메세지를 줄 수 있도록 해보자. 다음은 Pattern Annocation 을 이용하여 원하는 패턴의 정규식만 검증하도록 만든 Annotation 이다. 이름에 대한 유효성 검증으로서 2~15문자수의 한글이나 영문만 가능하도록 적용한 예제이다. 다음과 같이 필드에 적용하여 테스트 해볼 수 있다. 유효하지 않은 요청을 하게 되면 다음과 같이 에러메세지를 준다 ..! 에러메세지의 파라미터들은 필요에따라서 커스텀마이징을 하면 된다.(아래 1번 링크 참조) Pattern이 아니라 직접 구현해서 검증하고 싶다면 @Constraint(validatedBy = {NameValidator.class} ) Annodation 를 사용하고 Cons.. 2019. 12. 2.
Spring Boot POST Encoding EUC-KR 한글깨짐(UTF-8)현상 지인이 결제모듈을 붙이는 과정에서 EUC-KR로 응답요청을 받아서 아무리 인코딩 설정을 해도 한글이 깨져서 나온다며 구글링해도 해결되지 않아 도움을 요청했다. 어떻게 처리해야할까? 기본적으로 Spring Boot 에서는 Encoding Filter 가 UTF-8로 기본 설정이 된다. 그렇기 때문에 Controller 에서 요청 파라미터를 받았을때 이미 한글이 깨진형태로 나오기때문에 복구할 수가 없는것으로 보인다. 필자의 해결책은 이렇다. 특정 URL만 UTF-8이 아닌 EUC-KR로 바꿔 사용해야 하기때문에 특정 URL에만 동작하는 필터를 하나더 추가한다. 이렇게 추가하게 되면 필터에 등록되어 매핑된 URL이 들어올때 거치게 된다. 필터 체인 막바지 부분에 EUC-KR 인코딩으로 설정되어 파라미터가 잘 .. 2019. 11. 18.