반응형
어느 프로젝트에나 쉽게 적용 가능한 분산락 컴포넌트 개발 (feat. Spring)
개발/ETC2025. 1. 30. 23:41어느 프로젝트에나 쉽게 적용 가능한 분산락 컴포넌트 개발 (feat. Spring)

Intro항해플러스에서 진행중인 프로젝트인 콘서트 예약 서비스를 분산환경이라고 가정하고, 기존에 DB 락을 통하여 동시성 제어가 되어있던 부분을 분산락을 통해 제어하도록 리팩토링하고자 하였습니다. 이전에 인프런 강의를 수강하며 가볍게 스프링 프로젝트에 분산락을 적용해봤던 경험은 있었으나, 어디까지나 간단하게 "적용만" 해봤던 터라 프로젝트에 어떻게 "잘" 적용할 수 있을지에 대한 고민을 해본 것은 이번이 처음이였습니다. 이에 대하여 컬리 기술블로그의 풀필먼트 입고 서비스팀에서 분산락을 사용하는 방법 - Spring Redisson 글이 많이 도움이 되었는데, 해당 글을 참고하여 다음과 같은 부분들을 고려하고, 좀 더 범용적으로 사용할 수 있도록 수정하여 적용하게 되었습니다. (이해를 위하여 한번 읽어보고..

Inner Class를 Bean으로 등록할 수 있는 경우와 없는 경우
개발/Spring2024. 11. 13. 11:37Inner Class를 Bean으로 등록할 수 있는 경우와 없는 경우

Inner Class를 Bean으로 등록할 수 없는 경우public class OuterClass { @Component class InnerClass { }}스프링 프로젝트 내부에 위와 같이 선언한 이너 클래스가 있습니다. 이너 클래스에 @Component를 붙여서 Bean으로 등록하려 하면 과연 Bean으로 등록이 잘 될까요? import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplicat..

개발/Lecture2023. 9. 1. 21:38Practical Testing: 실용적인 테스트 가이드 강의 수강 후 정리

Intro 본 포스팅은 박우빈님의 Practical Testing: 실용적인 테스트 가이드 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. Section 1. 테스트는 왜 필요할까? 테스트는 귀찮다. 당연하다. 그렇다면 테스트코드는 왜 작성해야할까? 먼저, 올바른 테스트코드에 대하여 알아보자. 올바른 테스트코드란? 자동화 테스트로 비교적 빠른 시간 안에 버그를 발견할 수 있고, 수동 테스트에 드는 비용을 크게 절약할 수 있다. 소프트웨어의 빠른 변화를 지원한다. 팀원들의 집단 지성을 팀 차원의 이익으로 승격시킨다. 가까이 보면 느리지만, 멀리 보면 가장 빠르다. Section 2. 단위테스트(Unit test..

개발/Spring2023. 8. 2. 22:55Spring에서 CORS 문제 해결하기

Intro 최근 CORS에 대하여 공부를 해보고, Spring에서 CORS 설정은 어떻게 하는지에 대하여 공부에 본 뒤, 직접 적용하는 코드를 작성하고 간단하게 정리하고자 합니다. 모든 코드는 https://github.com/DevCHW/spring-cors-example 에서 확인하실 수 있습니다. 혼자 공부하여 정리한 내용이라 틀린 부분이 있을 수 있습니다. 이 점 유의하여 읽어주시고 틀린 부분이 있다면 고쳐주시면 감사하겠습니다! Spring CORS 설정 방법 3가지 어노테이션 활용 WebConfig에서 글로벌하게 설정 Spring Security 설정 어노테이션 활용 Controller 클래스에서 @CrossOrigin 어노테이션을 이용하여 CORS를 적용할 수 있습니다. 클래스레벨에 어노테이션..

개발/IntelliJ2023. 6. 13. 17:55[IntelliJ] SpringBoot 프로젝트 생성시 체크사항

LOMBOK 라이브러리 사용시 File→settings에 가서 Annotation Processor검색 Enable annotation processing 에 체크하기 Community 버전 사용시 File→settings->BuildTools->gradle 열기 Build and run using, Run tests using 부분이 Gradle로 되어 있다면 IntelliJ IDEA로 바꾸기 스프링부트 프로젝트 3.x 버전 사용시 유의사항 스프링부트 프로젝트 3.x버전을 사용할 경우 자바17버전과 호환되기 때문에 자바 다른버전을 쓰면 에러가 발생합니다. 따라서 스프링부트 프로젝트 3.x버전 사용시에는 자바17버전을 써야합니다.

사이드 프로젝트 [국비의 모든것] - 게시글 작성 구현
개발 기록2023. 6. 12. 23:23사이드 프로젝트 [국비의 모든것] - 게시글 작성 구현

목차UI요구사항 분석기능 구현 여느 커뮤니티 사이트에 있는 필수 기능인 게시글 작성 기능을 개발해보도록 하겠습니다.UI - BoardController.java/** 커뮤니티 작성 폼 */@GetMapping("/community/new")public String boardForm(@ModelAttribute CommunityFormDto form) { return "board/community/communityForm.tiles1";}먼저 /boards/community/new 로 Get 요청시, communityForm.jsp 를 서버사이드 렌더링합니다. 렌더링된 화면은 다음과 같습니다.  요구사항 분석위의 UI를 토대로 요구사항을 정의해보겠습니다.글 작성한 뒤, 간단하게 클라이언트에서 유효성 ..

사이드 프로젝트 [국비의 모든것] - 게시글 추천, 댓글 추천 기능 구현
개발 기록2023. 6. 12. 21:15사이드 프로젝트 [국비의 모든것] - 게시글 추천, 댓글 추천 기능 구현

목차UI/UX요구사항추천서비스 개발결과 쿼리UI/UX 요구사항추천은 게시글 추천, 댓글 추천을 할 수 있습니다.추천을 한 상태에서 한번 더 추천을 누르면(요청을 한다면) 추천을 취소합니다.추천서비스 개발먼저 요청을 처리하는 LikeController를 만들어 다음과 같은 코드를 넣어줍니다. -  LikeController.javaprivate final LikeService likeService;/** 게시글에서 추천 클릭시 처리 API */@PostMapping("/board")public BaseResponse boardLike(@RequestParam Long memberId, @RequestParam Long boardId) { String deleteOrInsert = likeService..

사이드 프로젝트 [국비의 모든것] - 게시글 단건 조회 (1) 조회수 증가, 광고, 이전글/다음글, 해시태그 조회 구현
개발 기록2023. 6. 11. 05:26사이드 프로젝트 [국비의 모든것] - 게시글 단건 조회 (1) 조회수 증가, 광고, 이전글/다음글, 해시태그 조회 구현

목차기능 요구사항 분석조회 수 증가광고 조회이전글/다음글 조회해시태그 조회기능 요구사항 분석이번에는 게시글 목록 페이지에서 게시글 하나를 클릭하였을 때 들어갈 수 있는 게시물 상세보기 페이지 백엔드 부분을 개발해보도록 하겠습니다. 먼저 기존에 개발해놓은 게시물 상세보기 페이지 화면은 다음과 같습니다.     화면에 출력할 필요한 데이터게시글 작성자 : 프로필이미지, 닉네임, 활동점수게시글 : 조회수, 제목, 내용, 추천 수, 이전글제목, 이전글번호, 다음글제목, 다음글번호, 댓글목록, 게시물 작성일자댓글 작성자 : 프로필이미지, 닉네임, 활동점수댓글 : 추천 수, 블라인드 설정 여부, 내용, 부모댓글 번호광고 : 광고 이미지 파일명 화면에서는 상위-하위 댓글로만 구성되어있지만 추후 변경될 수 있으므로 계..

반응형
image
loading