반응형 전체 글341 [SpringDoc] SpringFox -> SpringDoc 마이그레이션 일지 목차 0. 서론 1. Swagger vs SpringFox vs SpringDoc 2. 왜 SpringFox보다 SpringDoc일까? 3. SpringDoc으로 마이그레이션하기 4. 트러블슈팅 0. 서론 최근 팀 코드에 SpringFox를 SpringDoc으로 전환하는 작업을 진행하고 배포까지 무사히 마쳤다. 해당 글에서는 SpringDoc이란 무엇이고, 왜 SpringDoc 마이그레이션 하게 되었는지, 어떻게 마이그레이션 했고 그 과정 중 어떤 이슈가 있었는지 내용을 정리하려 한다. 1. Swagger vs SpringFox vs SpringDoc 🟢 Swagger API 설계, 테스트, 문서화 등을 편리하게 이용할 수 있게 돕는 프레임워크 Swagger UI: OenAPI를 기반으로 시각적 문서.. 2024. 1. 14. [한빛N MSA 후기] 일을 잘하는 방법 서론 얼마 전에 한빛미디어가 주최하는 세미나에 다녀왔다. 한빛N MSA라고 불리는 이 작은 세미나는 이미 10차례나 진행되었는데, 진행 완료된 세미나들의 영상을 모두 한빛미디어 사이트에 공개로 열어주시는 듯하다. 내가 들은 발표는 '이 회사는 나도 처음이라 - 첫 출근부터 끝까지 다 함께 레벨업'이라는 제목으로 일잘러가 되고 싶은 사람들에게 일잘러로 성장하는 방법을 공유해 주시는 내용이었다. 인상 깊었던 내용들 아래 내용은 발표를 제 임의로 요약하고 덧붙인 내용이 많습니다. 정확한 발표 내용은 이후 한빛미디어에 공개되는 영상을 확인 부탁드립니다. 1. 입사 후, 목표를 정하는 방법 나는 올해 초, 입사 직후에 방황했었다. 작년까지의 목표는 '취직'이었는데, 올해의 목표는 '회사 적응하기'로 바뀌었다. 그.. 2023. 12. 25. 1년차 개발자의 2023 회고 0. 서론 겨우 6개월 전에 상반기 회고를 작성했어서 2023 전체 회고는 패스해야지~라고 생각했었다. (입사 6개월차 신입의 회고 참고.) 헌데 막상 12월이 되어보니 올해를 되돌아보고 내년에 새로운 다짐을 정리하는 일에 회고글 작성만큼 효과적인 게 없다.🤣 그래서 올해도 작성한다. 올해 나는 무엇을 느꼈고, 앞으로 무엇을 하고 싶은지! 1. 올해 해낸 일 💻 회사 1월 3일 입사하고, 정규직 전환까지 무사히 마쳤다. 회사에서 노력한 일 중 뿌듯했던 일 몇 가지에 대해 이야기해 보겠다. -1) 팀 위키 개편 올해 한 일중 가장 뿌듯한 일이다. 입사하고 가장 힘들었던 점은 문서가 존재하지만 존재하지 않는다는 점이었다. 이게 무슨 말이냐 하면, 내가 필요한 문서가 어딘가에 존재는 한다. 다만 너무 옛날 문.. 2023. 12. 17. [DB] update set에서 주의할 점 최근 update 쿼리를 짜면서 겪었던 실수를 공유해보려고 한다. 일단 간단한 테스트 데이터를 준비해보았다. insert into test_menu (name, price, deleted) values (' 커피 ', 5000, 0); 여기서 name의 앞뒤에 공백이 들어간 데이터들에 대해 update 작업을 실행하려고 한다. 아래는 name은 trim 처리하고, price를 1000으로 변경하는 쿼리이다. update test_menu set name = trim(name) and price = 1000 where name like ' %' or name like '% '; 하지만 실제 결과를 보면 뭔가 이상하다. name에는 0이라는 값이 들어갔고, price는 변경되지 않았다. 당연한 이야기다. 왜.. 2023. 11. 19. @Async와 함께 사라지다 (feat. TaskDecorator) 목차 1. 스레드가 가진 데이터, ThreadLocal 2. 데이터가 사라졌어요 (예제코드) 3. 비동기와 사라진 데이터 3. ThreadLocal 유지하기 1. 스레드가 가진 데이터, ThreadLocal ThreadLocal는 각 스레드마다 별도의 내부 저장소를 지원해준다. 일반적으로 지역 변수는 해당 변수를 선언한 코드 블록 내에서만 사용 가능하지만, ThreadLocal를 이용해 저장한 데이터는 데이터를 저장한 스레드 내에서라면 어디서든 사용 가능하다. 예를 들어 아래와 같이 ThreadLocal에 자주 사용되는 사용자 정보 등을 저장할 수도 있다. 사용자 정보를 저장하고 싶을때는 UserSessionContext.set(), 꺼내오고 싶다면 UserSessionContext.currentSe.. 2023. 10. 29. [Spring Batch] JobExecutionAlreadyRunningException 에러 🤯 에러 발생 Spring Batch에서 job을 실행하다가 아래와 같은 에러와 마주쳤다. java.lang.IllegalStateException: Failed to execute ApplicationRunner ... Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: JobExecution: id=4223, version=1, startTime=2023-08-21 19:14:19.0, endTime=2023-08-22 15:38:48.0, lastUpdated=2023-08-21 19:14:19.0, st.. 2023. 10. 16. [책 후기] 사라진 개발자들 저자: 캐시 클라이먼 출판사: 한빛미디어 책 링크: https://hanbit.co.kr/store/books/look.php?p_code=B4793001395 1. 책을 읽기 시작하며 개인적으로는 정말 재밌게 읽었다! 이 책의 유일한 단점을 꼽자면 어려운 이름라고 생각한다. 나는 사람 이름을 정말 못 외우는 편이라 기억하기 힘들었다. 영어 이름은 퍼스트네임, 미들네임, 라스트네임에 친한 사람들이 부르는 애칭도 따로 있다 보니 그래서 얘가 누구라고? 멈칫거리기도 했다. 처음에 10p 정도 읽다가 덮고, 아이패드와 함께 이름을 메모해 가며 처음부터 다시 읽기 시작했다. 초반에는 인물과 기관명을 기억하느라 낑낑댔고, 중간쯤부터는 이야기가 재밌어서 단숨에 읽어버렸다. 위 메모를 보고 겁먹지말기를 바란다. 쓰다.. 2023. 10. 2. [Mockito] Invalid use of argument matchers! 에러 😱 에러 발생 org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 2 matchers expected, 1 recorded 에러 아래와 같은 테스트 코드를 실행시키다 위와 같은 에러 로그를 만났다. var service = mock(MemberFindService.class); verify(service).findByIdAndName(anyLong(), "yeonlog"); 에러를 해석해보자면 argument matchers를 잘못 사용했다. 2개의 matcher가 예상되었지만, 1개만 존재한다. 이 의미를 이해하기 위해서는 argument matchers가 무엇인지 먼저 알아야한다... 2023. 9. 27. [JPA] @Where 무시하기 DB에서 데이터 삭제를 하기 위해서는 크게 hard delete와 soft delete가 존재한다. hard delete: SQL의 DELETE문을 이용해 직접 데이터를 삭제하는 방법. soft delete: SQL의 UPDATE문을 이용해 삭제 여부를 저장하는 컬럼을 변경하는 방법. 표준으로 정해진 것은 아니지만 soft delete는 일반적으로 deleted라는 컬럼에 true/false를 알 수 있는 값을 저장한다. soft delete의 단점은 조회할 때마다 조회 조건을 추가하는게 매우 귀찮다. (일반적으로 조회는 삭제되지 않은 데이터들을 조회해야하니 where deleted = 0 같은 조건을 넣어야 한다.) 헌데 JPA에서는 정말 편리하게도 @Where라는 어노테이션을 제공해준다. @Where.. 2023. 9. 11. 이전 1 2 3 4 5 6 7 ··· 38 다음 반응형