Spring Framework 46

[SpringBoot] X-AUTH-TOKEN 으로 보내지 않을 경우 JWT 로직은 에러가 난다.

어제 안드로이드 쪽을 맡고 있는 친구랑 API 요청을 맞춰보던 중에 자꾸 UserDetails 로 String conversion 이 일어나지 못했다는 classcast Exception 이 발생했다. 이상하다 싶었다. 분명 내가 postman 에서 테스트할때는 전혀 문제 없었는데 친구가 안드로이드쪽에서 요청을 보낼때만 에러가 발생했다. 그리고 그 근본 발생지도 시큐리티 코어쪽에서 로그가 찍혀있어서 잔뜩 겁을 먹고 있었다. (시큐리티 코어를 아직 잘 모른다. 아니 사실 거의 모른다... ) 이것 저것 해보다가 도저히 해결이 안되서 그냥 모든 지점마다 Breakpoint 마냥 전부다 Print 로 찍어보면서 정확히 어디가 문제인지 전부 찍어봤는데 확실히 문제가 되는 지점을 찾았고 거기서 뭔가 이상한 점을 ..

[SpringBoot] Swagger 사용할때 반드시 주의할 점!! - @ApiModel 의 value는 겹치면 안된다.

오늘 모처럼 빨간날이라 쉬던 와중에 같은 팀원으로부터 api 에 전달해야할 정보가 뭔가 이상하다는 카톡을 받았다. 급히 swagger api spec 에 접속해서 확인해보니 정말 뭔가 이상했다. api 명세를 보니 Dto 객체를 전달받아서 그 Dto 를 통해서 이것저것 작업을 수행해줘야 하는데 어째 api spec 에 명시된 필드들이 Dto에 있는 필드들보다 더 많은 필드들이 존재했다. 이 Dto에서는 이런 필드를 정의해준적이 없는데 어디서 나온 필드들일까? 하고 생각했다. 그런데 그 필드들은 어디선가 많이 본듯한 필드인 것을 직감했다. 먼저 결론부터 말하겠다. Swagger 어노테이션을 사용하면서 @ApiModel 라는 어노테이션에 해당 네임을 적어주는 기능이 존재한다. 그런데 만약 다른 도메인 객체 ..

[Springboot & Intellij] 9.png 나인패치 이미지란? 9Patch image

springboot 어플리케이션을 작성 중에 신기한 걸 발견했다. 이미지들이 레포에 올라가지 않게 하기 위해서 gitignore에 이미지형식을 적어주고 있었는데 png 를 작성할때마다 자꾸 9.png 라는 양식으로 자동완성이 되었다. 그런데 9.png ? 들어본적도 없고 이런 이름을 자동완성을 시켜준다는게 상당히 이상하게 느껴졌다. 다른 의미있는 이름으로 자동완성시켜준다면 어디선가 쓰겠거니 하겠는데 9.png 라고 하는 의미없는 네이밍이 신기하게 느껴졌다. 그래서 검색해보니 아마 이게 맞을지는 모르겠지만 안드로이드에서 사용하는 나인패치 이미지와 연관성이 있을것이라고 결론내렸다. 이외에는 9.png 와 관련된게 딱히 없었다. (검색창에 springboot 나인패치 이미지 or springboot 9.png..

[springboot]cannot deserialize from Object value (no delegate- or property-based Creator) 에러 발생

스프링 부트로 만든 어플리케이션을 테스트하던 도중에 cannot deserialize from Object value (no delegate- or property-based Creator) 라는 에러를 만났다. api 를 호출하면서 어떤 Dto를 전달해주는데 그 사이에서 형식이 맞지 않았던 혹은 전달이 잘못되었든 어딘가에 문제가 생겼을 것이라고 추측하였다. 해결방법은 아주 간단하다. 아래는 내가 api로 전달하고자 했던 Dto 이다. (해결한 모습이다.) 위와 같이 Dto를 선언해줌으로써 해결할 수 있었다. 원래 해결되기 이전에는 @NoArgsConstructor 어노테이션이 없었다. 왜 이 어노테이션이 없으면 에러가 발생할까? jackson library가 빈 생성자가 없는 모델을 생성할 줄 모르기 ..

[JPA사용중] TransactionRequiredException: Executing an update/delete query 에러 발생/ 트랜잭션이란?

굉장히 간단한 에러이다. 근데 로직이 틀린게 아닌데 왜 에러가 날까 싶을거다. update나 delete 구문을 실행할때 @Transactional 어노테이션을 달아주지 않으면 발생하게 되는 에러이다. 이렇게 @Transactional 을 달아주면 에러가 나지 않는다. @Transactional 이 하는 기능도 굉장히 직관적인데 디비를 공부했다면 트랜잭션이 무엇인지 알것이다. 기억을 더듬어보자. @Transactional 은 이 어노테이션이 붙은 메서드의 경우 메서드가 포함하고 있는 작업 중에 하나라도 실패할 경우 전체 작업을 취소한다는 뜻이다. 전체 작업을 취소한다? 데이터베이스를 배웠다면 기억이 날텐데, 우리가 B라는 사람에게 돈을 보냈는데 갑자기 중간에 은행이 번개를 맞아서(ㅋㅋ) 실제로 내가 보낸..

[SpringBoot] 퍼블릭 IPv4 주소로 ec2에 연결시 connection timed out 발생할 경우

가끔 만들어놓은 ec2에 스프링부트를 띄워놓고 퍼블릭 ipv4 주소로 접근해서 잘 뜨는지 확인하려고 할경우 아무리 접속해도 connection timed out 이 발생하는 경우가 있다. 스프링부트 어플리케이션은 잘만 돌아가고 있는데도 왜 이렇게 접속이 안되는걸까? 성급하게 ec2를 만들고 빨리 테스트해보고 싶어서 이것저것 놓치면 발생하는 문제다. 보안 그룹에서 인바운드 규칙에 8080포트를 안열어놨을 가능성이 크다. SSH 연결하려고 22포트만 열어놓고 RDS 연결한다고 3306만 열어놓고 나머진 열어놓지 않아서 발생하는 문제이다. 꼼꼼히 살피고 HTTP, HTTPS, 혹은 8080포트를 열어놓자. https://bcp0109.tistory.com/356 AWS 1편: EC2 생성 후 Spring Bo..

[SpringBoot] hikaripool-1-Starting... stuck 문제 - hikaripool 에서 멈출 경우 대응방법

새롭게 진행하는 프로젝트에서 ec2를 만들어서 rds랑 연결하는 작업을 하고 있는데 스프링 부트 어플리케이션을 실행하면 hikaripool starting... 에서 무한정 대기하는 현상을 발견했다. 로컬에서 rds 에 연결했을때도 잘 연결됬는데 ec2 상에서 문제가 발생하는 것을 보고 인터넷을 한참 뒤졌다. 관련된 자료로는 hikari의 경우 특정 버전, 예를 들면 window 와 특정 oracle jdk 버전(18>이후)에서 고질적인 문제를 겪는다고 한다. 관련된 github 이슈가 딱 하나 있었는데 대화가 상당히 진행되며 이야기한 것의 요약을 해보면 위 환경에서 이유없이 그냥 stuck 되는 경우가 있었다고 한다. (이것때문에 고민하신 분들이 꽤 많았다. 하지만 내 문제와는 살짝 결이 다른 이슈인것..

[SpringBoot] SSH 접속 오류 : WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! + IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

오늘 잠시 운영중인 EC2에 문제가 생겨서 프론트 개발팀으로부터 확인해달라는 요청을 받았다. 나와 같이 백엔드를 맡고 계신분께서 ec2를 새로 파셨는데도 안된다는 연락을 받아서 나도 확인해보기 위해 새롭게 만들어진 ec2에 접근하려고 ssh설정을 만져주고 있었다. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eave..

반응형