반응형

Programming 375

@NotNull @NotEmpty @NotBlank 차이점 한번은 알고 가자

@NotNull @NotEmpty @NotBlank javax.validation.constraints package에 포함된 기능으로 api에서 값을 입력받을 때 validation 체크를 위해 사용되는 어노테이션입니다. 많이 사용하게 되는 어노테이션으로 한 번만 차이를 확실히 알고 나면 용도에 맞게 잘 사용할 수 있습니다. @NotNull 먼저 NotNull 입니다. The annotated element must not be null. Accepts any type. NotNull은 말 그대로 null 값만 허용하지 않습니다. 그렇기 때문에 "", " " 가 입력되었을 경우는 허용하게 됩니다. @NotEmpty 다음으로 NotEmpty 입니다. The annotatd element must not ..

RestTemplate 4xx, 5xx Code 처리하는 방법 (HttpClientException)

RestTemplate이란 간략하게 spring framework 3.0부터 지원되는 http 통신에 사용되는 템플릿입니다. RESTful 형식을 따르며 json, xml 형식의 데이터를 쉽게 받을 수 있습니다. * RestTemplate에 대한 자세한 내용은 다루지 않고 해당 에러에 관한 내용만 다루는 포스팅입니다. { "state": 400, "data": [], "result": "fail", "message": "QR 코드의 유효기간이 지났습니다.", "error": [] } RestTemplate의 문제점 중 하나는 위 예시의 json 데이터 처럼 4xx, 5xx의 응답 코드를 받았을 때 Exception을 발생시킨다는 것인데요. 통신을 하다보면 200 상태의 success 뿐만 아니라 4xx,..

Connection is not available, request timed out after 10000ms. 에러의 원인은

프로젝트 중 발생한 에러입니다. 해당 에러는 요청 시 바로 발생하지 않아서 모르고 있다가 개발서버에 올려 테스트하던 중 발생을 확인하고 조치하였습니다. 커넥션 풀과 관련된 HikariCP Dead lock 이라고 불리는 에러였으며, 해결하기 위해 자료를 찾아보며 커넥션 풀이 프로그램에서 중요하고, 또 그렇기 때문에 자세하게 공부하여 잘 적용해야 한다고 느꼈습니다. * 해당 포스팅의 내용은 커넥션 풀에 대해 이해도가 많이 부족하며, 에러의 원인과 해결에 대한 방법만 찾은 포스팅입니다. (해결 방법은 포스팅 하단에 있으며 미리 원인을 말씀드리면 Querydsl에서 transform을 사용하면서 DB connection leak이 걸렸습니다. querydsl에서 transform 사용 시 트랜잭션 내부에서 실..

Programming/Error 2021.10.02

SSLException: Unsupported or unrecognized SSL message

javax.net.ssl.SSLException: Unsupported or unrecognized SSL message 두 개의 REST API를 가지고 서로 요청을 주고받기 위해 RestTemplate을 사용하던 중 발생한 에러입니다. 초기 개발단계에서 하나의 REST API는 http:localhost:8081 으로 가동하였고, 다른 하나의 API는 http:localhost:8083으로 가동하여 restTemplate을 통해 요청을 보냈습니다. public ResponseEntity qrScan(QrScan qrScan) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); Http..

Programming/Error 2021.09.29

XML to Java Object 변환하기 JAXB API

JAXB api를 사용하여 XML 형식의 데이터를 자바 객체로 변환하는 방법입니다. 지금까지 JSON 형식의 데이터만 접해보다가 이번에 공공데이터 포털의 open api를 사용하며 데이터 포멧이 XML인 경우를 처음 접해봤습니다. 데이터를 조회하여 xml 형식으로 뽑아오는 것은 금방 할 수 있었지만, 조회된 XML 데이터를 자바 객체로 변환하는 것은 생소하여 생각보다 시간이 걸렸습니다. 해당 포스팅은 JAXB에 대한 구체적인 내용과 설명, 이해에 관한 내용 없이 단순하게 XML 데이터를 Java Object로 변환하는 과정만 담았습니다. 추후 해당 내용에 대해 더 공부하여 구체적인 설명과 함께 다시 포스팅을 작성하도록 하겠습니다. JAXB (Java Architecture for XML Binding)는..

Programming/Java 2021.09.28

JWT + Redis Logout 로그아웃 구현하기

Spring Security + JWT 로그인 기능 파헤치기 - 1 로그인 기능은 거의 대부분의 애플리케이션에서 기본적으로 사용됩니다. 추가로 요즘은 웹이 아닌 모바일에서도 사용 가능하다는 장점과 Stateless 한 서버 구현을 위해 JWT를 사용하는 경우를 많 wildeveloperetrain.tistory.com Spring Security + JWT + Redis + JPA 사용한 로그인 구현의 마지막 Logout 포스팅입니다. Spring Security + JWT 기능 파헤치기 1, 2 포스팅과 Redis를 사용하여 RefreshToken을 저장하는 포스팅에 이어 4번째 포스팅입니다. (이전 내용은 위 링크를 참고 부탁드리겠으며, 전체 코드 GitHub 주소 및 참고 내용은 맨 하단에 링크해두..

application.yml (yaml) 숫자가 0으로 시작했을 때 오류

Spring Boot에서는 외부 설정값을 관리하는 파일로 application.properties 또는 application.yml 을 사용하는데요. application.yml 파일에서 0으로 시작하는 숫자 값을 사용하며 발생한 오류입니다. number: test: 002003 templateCode 라는 값을 외부 설정값으로 등록하여 프로그램 내부에서 사용하기 위해서 application.yml 파일에 해당 값을 등록하였습니다. 그렇게 프로그램 내부에서 해당 templateCode라는 값을 가지고 외부에 요청을 했는데, 코드가 일치하지 않는다는 결과를 받았습니다. 확인을 위해 log를 찍어보니 yml 파일에 002003으로 등록한 값이 프로그램 내부에서 1027로 출력되고 있는 것을 확인했는데요. *..

Programming/Error 2021.09.25

security + jwt + redis 로그인 기능 구현 (최종)

이전 Spring Security + JWT 로그인 구현에서 마지막으로 Refresh Token 저장을 위한 Redis를 추가하고, 토큰 재발급 기능을 추가하여 로그인 기능을 완성하였습니다. Spring Security + JWT 로그인 기능 파헤치기 - 1 로그인 기능은 거의 대부분의 애플리케이션에서 기본적으로 사용됩니다. 추가로 요즘은 웹이 아닌 모바일에서도 사용 가능하다는 장점과 Stateless 한 서버 구현을 위해 JWT를 사용하는 경우를 많 wildeveloperetrain.tistory.com 앞서 포스팅 한 Security + JWT 로그인 구현 과정입니다. 이어지는 내용이기 때문에 참고 부탁드리겠습니다. Spring Boot Redis 두 가지 사용 방법 RedisTemplate, Red..

spring security + JWT 로그인 기능 파헤치기 - 2

Spring Security + JWT 로그인 기능 파헤치기 - 1 로그인 기능은 거의 대부분의 애플리케이션에서 기본적으로 사용됩니다. 추가로 요즘은 웹이 아닌 모바일에서도 사용 가능하다는 장점과 Stateless 한 서버 구현을 위해 JWT를 사용하는 경우를 많 wildeveloperetrain.tistory.com 전 포스팅에서 이어지는 내용입니다. 참고 부탁드리겠습니다. public ResponseEntity login(UserRequestDto.Login login) { // 1. Login ID/PW 를 기반으로 Authentication 객체 생성 // 이때 authentication 는 인증 여부를 확인하는 authenticated 값이 false UsernamePasswordAuthenti..

반응형