스프링

문제 QueryDSL을 공부하던 중에 QueryDSL을 이용해서 Join 하는 코드를 개발하는 중이었는데, 이 코드가 제대로 동작하지 않았다. 문제가 되는 코드는 다음과 같았다. @Test @DisplayName("조인 Error가 발생함") void searchErrorTest() { Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1", 10, teamA); Member member2 = new Member("member2", 20, teamA); Member member3 = new Member("memb..
개발 일기 챔피언 이름 번역 롤 API 호출시 챔피언 이름이 영어로 나왔고 사이트에서는 한글로 표현이 되야 하는데, 이를 플러터/웹 사이트 각각 처리해주지 말고 백엔드에서 처리해주는게 어떻겠냐는 플러터 개발자님의 의견이 있었다. 합리적인 의견인 것 같아서 그렇게 하기로 했다. 그리고 또한 한글로 번역을 했을 때 이를 데이터 베이스에 저장을 해야할지, 그래서 Entity도 리팩터링을 해야할지에 대한 생각도 들었다. 결론적으로 챔피언이 많지 않기 때문에 (해봐야 게임 당 10건) 변환 작업시 많은 시간을 소요할 것 같다고 생각되지 않아서 데이터 베이스에 저장하지 않고 비즈니스 로직에서 변환하는 작업을 해주기로 했다. https://developer.riotgames.com/docs/lol 위 사이트에서 La..
Riot은 인게임에서 게임 ID를 복사하면 "게임아이디" 이런식으로 복사되게 해놓고는 게임 아이디로 검색을 호출할 때는 "KR_게임아이디" 이런식으로 받는다. 그래서 이 KR이라는 것을 다음과 같이 LolSearchAdapter에 넣어주고 한동안 Controller를 생성하지 않았다. public MatchRecord searchMatch(String matchId) { try { matchId = "KR_" + matchId; MatchRecord result = restTemplate.getForObject( "https://asia.api.riotgames.com/lol/match/v5/matches/" + matchId + "?api_key=" + apiKey, MatchRecord.class )..
verify 책으로 공부할 때는 무심코 넘겼던 주제 중에서 verify라는 메서드가 있었다. 원하는 메서드가 몇 번 수행했는지를 추적할 수 있는 메서드이다. 지금 프로젝트가 초기단계인데 벌써 쓸 일이 두 번이나 생겼으니 이에 대해서 기록해볼려고 한다. 사용법 Mockito.verifyNoMoreInteractions: 더 이상 메서드 호출이 없음을 검증합니다. Mockito.verifyZeroInteractions: 메서드 호출이 없었음을 검증합니다. Mockito.verifyInOrder: 메서드 호출 순서를 검증합니다. Mockito.verify(mock, Mockito.atLeast(n)).method(arg1, arg2) : method 메서드가 최소 n 번 호출되었는지 검증합니다. 예시 일단 해..
이 글을 작성하게 된 계기? 🤔 아래와 같은 S3에 업로드, 삭제 테스트를 작성하던 중 삭제를 할 때 삭제할 파일이 미리 올라가있지 않다면 해당 파일을 삭제할 수 없었다. 그렇다고 삭제하는 코드에서 한 번 더 업로드를 하는 것도 싫었고 생성 삭제를 하나의 테스트로 묶기도 싫었다. @Test @DisplayName("S3에 파일 업로드 테스트") void upload() { // given String fileName = "test.mp4"; MultipartFile file; try { byte[] content = Files.readAllBytes(Paths.get("src/test/resources/test.mp4")); file = new MockMultipartFile(fileName, fileN..
🤔 이 게시물을 작성하게 된 계기 새로 시작한 프로젝트에서 동영상 업로드를 구현할 일이 생겨서 구현하는 중에 에러 메시지를 뱉어내지 않고 Unkown Exception이 자꾸 떨어지는 것을 확인했다. 그리고 게시물을 4~5개 정도 서칭하고 지피팅을 30분째 하고 있을 때 로그 레벨을 Debug 까지 낮추고 나서야 Resolved [org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded] 라는 에러가 발생하고 있는 것을 알게 되었다. 그리고 그 에러 검색을 해보고 나서야 이걸 해결하는 방법에 대해서 알게 되었다. 해결 방법은 application.yaml 파일에 max file size를 설정..
Youtube Data API 구글 클라우드 콘솔에서 Youtube Data Api를 사용설정을 해준다. 👇 코드 찾느라 애먹을 것도 없이 youtube 공식 깃허브에 예제 코드가 올라와 있다. 이해가 안가는 부분만 조금 서칭해보고 사용해주면 된다.
사건의 발단☣️ 현재 내 프로젝트의 구조는 다음과 같이 생겼다. 원래 api 모듈에 로그인, 토큰 발급, 토큰 검증 로직이 있었는데 apigw를 도입하면서 account에 따로 JWT Token 검증 API를 생성해서 apigw -> accout 모듈에서 Token 검증 후 라우팅 -> 목적지 서버 로 변경을 해줄려고 하다가 에러가 발생했다. 에러내용 : io.jsonwebtoken.UnsupportedJwtException: Signed Claims JWSs are not supported. 해결🎉 아마 많은 분들이 익숙한 코드일거라고 생각한다. 내 Validation 로직에서 parseClaimJwt 부분을 parseClaimJws로 변경해주면 이 문제는 해결된다. override fun valida..
발단 🦶 인자를 RequestParam으로 받아오면서 PathVariable로 요청하고 있는 멍청한 짓을 했다. 당연히 Controller에서 에러가 터졌고 ExceptionHandler 중에서 Controller 단의 에러를 핸들링하고 있는 로직이 없어서 Security 기본 ExceptionHandler에서 "머여? 에러났셔?@.@ 그럼 로그인 일단 한 번 해봐~@.@" 라며 리다이렉트 해주니... 나는 처음에는 @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {..
rookied
'스프링' 태그의 글 목록