1단계 : HTTP Request / Response 로그를 어디에서 처리해야 할까?HTTP Request / Response 로그는 공통 처리가 필요한 영역입니다. 이를 처리하기 위한 방법으로 주로 사용되는 세가지가 있습니다. 1. Servlet FilterServlet Filter 는 Dispatcher Servlet 의 전 / 후에 동작하며, 사용자의 요청이나 응답을 가장 먼저 마주합니다. 필터는 스프링의 고유 기능이 아니라 자바 서블릿에서 제공하는 기능입니다. Filter 는 동일한 Servlet Container (e.g Tomcat) 내에서 필요한 자원들을 활용하여 동작합니다. 2. Handler InterceptorInterceptor 는 Dispatcher Servlet 이 실행된 후 호..
왜 Entity Listener를 적용하였는가?지난 게시글에서 엔티티를 생성하거나 수정할 때 해당 엔티티의 인덱스를 생성 및 수정하는 작업을 위해 ApplicationEvent를 도입하여 서비스 간의 결합도를 줄이고, 트랜잭션 문제를 개선할 수 있었습니다. 그러나 지난 게시글에서 ApplicationEvent를 사용하는 방식에는 한 가지 단점이 있습니다. 매번 엔티티를 생성하거나 수정할 때마다 applicationEventPublisher.publishEvent() 메서드를 호출하는 코드를 작성해야 한다는 점입니다. 아래의 코드처럼 모든 이를 위해 모든 비즈니스 로직에서 일일이 이벤트 발행 코드를 추가해야 합니다.class UserService( private val userIndexService:..
왜 Application Event 를 도입하기로 하였는가.ElasticSearch를 사용하여 검색 기능을 구현하면서, 엔티티를 생성하거나 수정할 때 해당 엔티티의 인덱스를 생성 및 수정하는 작업도 함께 수행해야 했습니다. 기존 코드에서는 User 객체를 생성할 때 UserService에서 UserIndexService를 의존성 주입받아 사용하며, User 객체 생성 후 인덱스를 생성하는 방식으로 구현되었습니다.class UserService( private val userIndexService: UserIndexService) { @Transactional fun create(name: String, identity: Identity) : User { val user = U..
영속성 컨텍스트(Persistence Context)이란?영속성 컨텍스트는 애플리케이션과 데이터베이스 사이에 위치해 엔티티를 영구 저장(영속)하는 가상의 데이터베이스입니다. 이는 논리적인 개념으로, JPA에서 엔티티의 생명주기를 관리하고, 데이터베이스와의 상호작용을 최적화하는 역할을 합니다. 이번 글에서는 영속성 컨텍스트에 어떻게 접근하는지, 영속성 컨텍스트의 구성요소는 무엇인지, 그리고 영속성 컨텍스트가 어떤 일을 하는지 알아보겠습니다. 영속성 컨텍스트 접근하에 접근하는 도구 EntityManager 와 그를 생성하는 EntityManagerFactoryEntityManager 는 영속성 컨텍스트에 접근할 수 있는 주요 인터페이스입니다. 예를 들어, entityManager 는 persist 메서드를..
Spring 의 생명주기를 알고자 한다면,,,Spring의 생명주기는 스프링 컨테이너와 그 안에서 관리되고 있는 스프링 빈의 생명주기에 따릅니다. 스프링 컨테이너는 애플리케이션의 설정 정보를 바탕으로 애플리케이션에서 사용할 객체(빈)를 생성하고 관리합니다. 이 과정에서 스프링 컨테이너와 빈 객체는 각자의 생명주기를 가지며, 이 새명주기는 서로 밀접하게 연결되어 있습니다. 스프링 컨테이너의 생명주기스프링 컨테이너의 생명주기는 크게 세 단계로 나눌 수 있습니다: 1. 컨테이너 초기화: 스프링 컨테이너를 생성하고 설정 파일 또는 클래스에서 정의된 빈들을 초기화합니다.2. 컨테이너 사용: 애플리케이션이 실행되는 동안, 컨테이너는 빈을 제공하고, 빈은 필요한 작업을 수행합니다.3. 컨테이너 종료: 애플리케이션이 ..
깃허브에 데이터베이스의 암호와 같은 민감한 정보를 올리면 위험하기에 민감한 정보는 따로 저장해야 한다고 한다. 나는 AWS Parameter Store에 저장하여 불러오는 방식을 택하였다. Spring Cloud 버전 확인 자신의 Spring Boot 프로젝트 버전과 맞는지 확인하고 공식 문서에서 자신의 버전과 맞는 Spring Cloud를 결정해야 한다. 이 글은 다음과 같은 환경에서 진행했다. SpringBoot : 2.7.12 Java : 11 SpringCloud : 2021.0.5 요약 1. Spring Boot 프로젝트 설정 2. AWS Parameter store 설정 3. 콘솔에서 AWS Parameter Store 불러오기 1. Spring Boot 프로젝트 설정 1. build.grad..
- Total
- Today
- Yesterday
- 지연 대기열
- Spring Boot
- JPA
- CI와 CD의 차이
- 프로그래머스
- java
- entitylisteners
- Route53
- Spring
- Hibernate
- aws
- springboot
- fetchcount()
- 영속성 컨텍스트
- LeetCode
- CodeDeploy
- EC2
- appliationeventlistener
- network
- 트랜잭션
- persistencecontext
- 네트워크
- 영속 상태
- IAM
- DevOps
- 자바
- CI/CD
- acm
- githubactions
- 정렬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |