본문 바로가기

web/SpringBoot44

[REST API] @Configuration / @Component 개발을 하다보면 @Bean 등록을 할 때 @Configuration 과 @Component 중에 뭘써야 할지 몰라 정리해본다. 일단 내가 알고있는 간단한 개념은 @Configuration - 개발자가 직접 제어가 불가능한 외부 라이브러리 또는 설정을 위한 클래스를 Bean으로 등록할 때 사용 - Method 에 @Bean이 있어야함.(짝꿍쓰) - Spring 컨테이너(Ioc)에 의해 처리 @Component - 개발자가 직접 작성한 클래스를 빈으로 등록하고 싶을 때 사용 - 다른 클래스에서 Bean으로 불러 사용이 가능함 - CompoentScan의 대상임을 표시하고, Spring 컨테이너에 등록 얼핏보면 비슷해보이지만, 사실 알고보면 차이가 있다. 가장 큰 차이는 @Bean 등록하는 방법이 다르다는 것.. 2023. 11. 14.
[Mybatis] Mybatis 에서 useGeneratedKeys 와 selectkey MYSQL 에서 insert 시에 pk값을 auto_increment 설정해놓은 ID 를 등록과 동시에 반환을 하기위해, 쿼리를 짰다. SELECT IF(MAX(VER_NO)+1 >= 0, MAX(VER_NO)+1, 0 ) as newVer FROM table_name UAG_CD=#{uagCd} INSERT INTO table_name ( UAG_CD , TITLE , CONTENT , VER_NO , DISP_YN , DEL_YN , REG_USER_ID , INS_DT ) VALUES ( #{uagCd} ,#{title} ,#{content} ,#{newVer} ,#{dispYn} ,#{delYn} ,#{regUserId} ,CURRENT_TIMESTAMP() ) Integer rowCount = .. 2023. 11. 13.
[WebClient] WebClient 로 카카오모먼트 API 연동하기 Spring 어플리케이션에서 HTTP 요청을 할 땐 주로 RestTemplate 을 사용했었다. 하지만 Spring 5.0 버전부터는 RestTemplate 은 유지 모드로 변경되고 향후 deprecated 될 예정이므로 WebClient 쓰기를 적극 권장하고있다. (참고 https://docs.spring.io/spring-framework/reference/web/webflux-webclient.html) WebClient 는 논블로킹/블로킹 모두 지원한다.(참고로 RestTemplate는 블로킹방식이다.) 특징 싱글 스레드(코어당 1개의 스레드)와 Non-Blocking 방식 사용 높은 처리량과 확장성이 좋다. 이벤트에 반응형으로 동작(Spring React 프레임워크 사용) Reactor 기반의 .. 2023. 11. 8.
[REST API] 페이징(Paging) 처리하기 지금 진행하고 있는 프로젝트에서, 처음에 내가 API 개발을 해줄 때 페이징 처리까지 다 해서 줬었더랬다.. 근데, 위에서 View 단에서 다 알아서 할테니 그냥 전체리스트를 넘겨달라고 하더라? ... 아니 View에서 알아서 처리한다고? 어떻게 한다는거지?? 내가 모르는 신박한 방법이 있나? 싶어 일단 군말없이 시키는대로 했다. 하지만 성능테스트를 위해 확인해보니 View에서 페이징를 위해 전체 리스트를 갖고와서 리스트에 넣어둔 뒤 페이지마다 10개씩 뿌려주는식 ㅋㅋㅋㅋ 예상은 했지만 정말로 이렇게 진행을 해놨더라. ㅜ ㅜ.... 결국 이슈로 제기해서 기존에 해줬던 방식으로 소스를 원복하였다. 잡소리가 길었다. 이 글을 읽으시는분들은 이런식으로 페이징처리 하지말기를... 원복하는김에 생각보다 페이징은 .. 2023. 11. 6.