스프링부트

    디자인패턴을 이용한 장바구니 기능 구현 - 레디스와 스프링부트 활용

    이커머스 프로젝트를 진행하면서 장바구니 기능에 추가 요구사항이 생겨 리팩토링 하는 과정을 기록합니다. 이번 리팩토링을 위해 전략 패턴과 팩토리 메소드를 사용하였습니다. 팩토리 메서드 패턴은 객체 생성을 위한 패턴으로, 객체를 생성하는 역할을 서브클래스에 위임하여 유연성을 제공합니다. 전략 패턴은 행위를 캡슐화하고 런타임에 행위를 변경할 수 있는 패턴입니다. 이 패턴은 애플리케이션의 일부를 동적으로 교체하고 다양한 전략을 적용할 수 있도록 도와줍니다. 기존 로직 Redis 저장소에 제품을 저장하는 기존 로직을 살펴보겠습니다. @Service class BasketItemService( ... ) { fun addBasketItem(basketItemRequest: BasketItemRequest) { //..

    MyBatis, MySql, Spring Boot를 이용한 간단 예제

    MyBatis, MySql, Spring Boot를 이용한 간단 예제

    [도입] 자바에서는 데이터베이스를 이용하기 위해 JDBC API를 이용하는데, 개발자가 작성해야 하는 코드가 너무 많아 불편했다. 이런 JDBC를 사용하기 쉽게 SQL Mapper를 이용한 MyBatis의 간단 예제를 살펴보자. [MyBatis 동작 원리] 1. 애플리케이션이 시작되면 SqlSessionFactoryBuilder는 MyBatis 설정 파일을 참고해서 SqlSessionFactory를 생성한다. 2. 애플리케이션에서 Sql 요청이 들어오면 SqlSession을 생성한다. 3. 생성한 SqlSession는 수행하는 쿼리문이 담겨져 있는 mapper를 참고하여 DB작업을 수행한다. [Mapper Interface] MyBatis 3.0이전에는 xml파일에 쿼리 명령문을 작성했어야 했는데, 3...

    [Spring] 의존성 주입과 동일 타입 클래스 문제 해결

    [Spring] 의존성 주입과 동일 타입 클래스 문제 해결

    의존성 주입을 위해 필드 주입, setter주입, 생성자 주입 등 여러 가지 방법을 이용할 수 있다. 하지만, 프로그램에서 한 번 의존성을 셋팅하고 나면 바꿀 일이 없기 때문에 생성자 주입 방법이 권장된다. 의존성 주입 다음과 같이 NoteService에서 NoteRepository를 필요로 한다고 가정해보자. 이런 경우 생성자 또는 setter를 이용하여 noteRepository의 실제 객체를 주입 받아야 한다. 이런 것을 의존성 주입이라고 한다. public class NoteService { private NoteRepository noteRepository; public NoteService(NoteRepository noteRepository) { this.noteRepository = not..