본문 바로가기

spring

(53)
Springboot Cookie에 대해 갑작스럽게 스프링부트 쿠키로 돌아온 게 이상하지만 블로그 부재중 동안 알고리즘 공부도 하고 이력서도 돌려보고 면접 준비도 하며 지내며 다음 개인 프로젝트를 진행하려 했다. 어느 정도 구성은 했고 문서 작성하고 실행하며 블로그 작성하면 되는데 이전에는 사용하지 않았던 oauth2를 사용하려 했다. 시큐리티와 jwt는 이전에 사용해 보았어서 어느 정도 코드를 구성할 수 있지만 ouath2는 사용해 본 적 없기에 간단하게 토이프로젝트를 진행하고 해 보자. 해서 구현하는데 레퍼런스로 레거시가 많았고 직접 찾으며 생각한 기능들을 토대로 구현하기가 막막했다. 그러던 와중 토이 프로젝트를 하고 있다가 mvc부터 로그인 과정 등등 모든 게 백지처럼 시작하기 앞서 아무것도 생각이 나지 않고 어떻게 했더라 라는 생각이 불..
멀티 모듈 kafka 추가하기 이번 포스팅은 저번 멀티 모듈을 구성한 프로젝트에서 카프카를 추가해 볼 것이다. 카프카 프로듀서와 컨슈머를 설정을 통해 각 생성해서 사용할 것이다.이를 어느 모듈에 둘지 고민을 하다 인프라 모듈에 위치하기로 했다. 기능에 대한 설정 정보를 작성하기 적절하다 생각하기 때문이다. 2~3개 정도의 토픽을 생성해서 카프카를 활용해 볼 생각이다.이전 카프카 포스팅에서는 카프카 커넥트에 대해서 다루지 않았었는데 이번 포스팅에서 카프카 커넥트를 사용하지 않는 카프카로 사용자가 구매한 구매 목록과 배송 정보를 메시지로 발행하고 구독하는 컨슈머에서 소비하도록 하고 카프카 커넥트를 사용해서 DB와 연결해서 DB의 데이터로 소비할 수 있도록 할 것이다.소비 시에 이메일로 구매 정보와 배송에 대한 정보를 보내도록 하겠다.실제..
단일 모듈 프로젝트 멀티 모듈 구성하기 -7 오늘 포스팅은 어제 실행이 가능하게끔 만들었으니 우선 api 부분도 main을 생성해 따로 구동이 가능하게끔 구성하겠다. 아래와 같이 API도 Main을 추가하고 패키지를 바꿔줘서 실행이 가능하게끔 했다.package com.project;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication(scanBasePackages = "com.project")public class MainApiApplication { public static void main(String[] args) { Sprin..
단일 모듈 프로젝트 멀티 모듈 구성하기 -6 오늘은 멀티 모듈로 구성한 프로젝트를 실행 먼저 해보도록 하겠다.실행하기 앞서 필자가 aop를 적용할 때 pointcut을 만들어 둔 클래스가 있는데 패키지와 프로젝트가 바뀌면서 다시 지정해야 한다.package com.aop.pointcut;import org.aspectj.lang.annotation.Pointcut;public class Pointcuts { @Pointcut("execution(* shoppingmall.project..*(..))") public void allPoint(){} // signature @Pointcut("within(shoppingmall.project..*Service*)") public void allService(){} @Point..
단일 모듈 프로젝트 멀티 모듈 구성하기 -5 어제에 이어서 작성하도록 하겠다.오류 제거랑 빠진 클래스 없는지 확인하고 각 모듈과 클래스 전체적으로 그림을 통해서 역할과 책임을 알아보도록 하겠다.우선 현재 구성한 모듈을 이미지로 알아보고 각 모듈이 무엇을 의존하는지도 확인하고 진행하자. 현재 모듈 구성을 알아보았다. 이제 각 모듈이 어떻게 의존하는지 점선을 통해서 알아보자. 조금 난잡해질 수 있지만 최대한 깔끔히 해보도록 하겠다. 위와 같은 의존성이 생긴다. 복잡할거라 생각했지만 내부적으로 들어가면 약간 더 복잡하게 의존성이 있지만 직접적으로 의존성이 필요한 것에 대해서만 이어보았다. 일단 어제 남은 오류를 처리하고 각 모듈의 역할과 책임을 확인하고 나눌 부분이 생긴다면 나눠 보도록 하겠다.오류를 처리했는데 어떤 부분이 문제였는지 확인하고 가보자.a..
단일 모듈 프로젝트 멀티 모듈 구성하기 -4 저번 포스팅에 이어 애플리케이션 계층인 서비스에 대한 모듈을 구성해 보고자 한다.기존 프로젝트에서 REST API와 웹 로직을 분리해서 작성했기 때문에 모듈을 분리하는 데 있어서는 큰 어려움이 없을 것 같다.하지만 기존 서비스 로직을 하나 확인해 보자.package shoppingmall.project.service;import jakarta.servlet.http.HttpSession;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional..
단일 모듈 프로젝트 멀티 모듈 구성하기 -3 어제에 이어서 new-core 모듈을 마저 구성해 보자.infra 모듈에 설정파일을 구성해야 하고 database 모듈에는 추상화하는 클래스를 만들고 하위로 mysql 모듈을 만들 것이다. 추후 새로운 데이터베이스를 추가하고 제거하는데 편리할 것이다.먼저 할 것은 infra 모듈에 설정 파일을 넣고 필자가 사용하는 yml은 application.yml, application-ec2.yml 개발용, 배포용을 따로 두었는데 이를 분리해서 만들도록 하겠다.설정 클래스인 config 파일들을 보니 웹에 관련된 부분이 많이 포함되어 있었다. 현재 필자 config 파일을 확인해 보고 넘어가 보자.@Configurationpublic class MetricConfig { @Bean public Count..
단일 모듈 프로젝트 멀티 모듈 구성하기 -2 이번 포스팅은 저번 포스팅에 이어서 코어 모듈로 인프라와 도메인 영역을 나눠보도록 하겠다. 영역을 나눠서 모듈을 구성하기 이전에 아래에도 설명되어 있긴 하지만 클론 한 본 프로젝트와 별개로 새 프로젝트를 구성해서 모듈을 구성할 것이다. 왜냐하면 본 프로젝트를 보관하기 위해 클론 한 프로젝트도 멀티 모듈을 잘 구성할 수 없는 상황에서 분리해서 건드리기 어렵기 때문에 새로운 프로젝트를 통해서 구성하기로 했다. 저번 포스팅에서 어떤 기술이나 기능에도 종속되지 않는 순수한 자바 코드가 있어야 할 공통 계층에는 넣을 것이 없어서 넘어갔어서 프로젝트의 최상위 gradle에 대한 설정도 하지 않고 넘어갔다. 이번에는 모듈을 나눌 것이기 때문에 먼저 최상위 모듈의 gradle을 구성해 보자. //plugin은 미리 구..