Spring
-
스프링 AOP에서 "프록시를 거친다"는 것은 무슨뜻일까? AOP @Transacitonal 원리Spring/Spring Core 2024. 12. 3. 10:32
스프링 AOP에서 "프록시를 거친다"는 것은, 스프링이 **프록시 객체(Proxy Object)**를 생성하여 메서드 호출을 가로채고, AOP 로직(Advice)을 실행한 후 실제 객체의 메서드를 호출하는 과정을 의미합니다.프록시의 개념프록시는 객체를 대신해서 동작하는 중간 대리자 역할을 합니다. 스프링 AOP는 프록시 패턴을 사용하여, 대상 객체의 메서드 호출을 가로채고, AOP로 정의된 부가 작업(예: 로깅, 트랜잭션 관리)을 실행합니다. 프록시가 생성되는 과정빈 등록 시 프록시 생성:스프링 컨테이너는 빈(bean)을 등록할 때, 해당 빈에 AOP가 적용되어야 하는지 확인합니다.AOP 설정이 적용된 경우, 원래의 빈 대신 프록시 객체를 생성합니다.프록시 객체의 역할:프록시는 실제 객체를 감싸고 있으며..
-
List<MultipartFile> 가 톰캣서버,스프링에서 읽어드리는 과정Spring 2024. 11. 12. 22:52
1. 클라이언트와 서버의 연결 및 요청 전송클라이언트가 500MB 비디오 파일을 서버에 업로드할 때, 보통 HTTP POST 요청을 통해 파일 데이터를 전송합니다. 이 과정에서 클라이언트와 서버 간에 TCP 연결이 설정됩니다.TCP 연결 수립 (3-way handshake):클라이언트와 서버는 서로 TCP 연결을 설정하기 위해 3-way handshake를 수행합니다.이 과정에서 클라이언트는 서버에 SYN 패킷을 보내고, 서버는 ACK 패킷으로 응답하여 연결이 설정됩니다.HTTP POST 요청 시작:연결이 설정된 후, 클라이언트는 HTTP POST 요청의 헤더를 먼저 전송합니다. 헤더에는 파일의 메타데이터(예: 파일명, 크기, MIME 타입 등)가 포함됩니다.서버는 클라이언트의 헤더 정보를 읽고, 그다음..
-
Spring framework에서 사용하는 디자인 패턴Spring 2024. 11. 11. 09:37
스프링 프레임워크는 다양한 디자인 패턴을 활용하여 개발자가 보다 효율적이고 유지보수하기 쉬운 애플리케이션을 개발할 수 있도록 돕습니다. 스프링에서 자주 사용되는 주요 디자인 패턴과 이를 사용하는 예시는 다음과 같습니다.1. 싱글톤 패턴 (Singleton Pattern)설명: 싱글톤 패턴은 특정 클래스의 인스턴스를 하나만 생성하여, 모든 클라이언트가 동일한 인스턴스를 공유하도록 보장합니다. 객체 생성 비용이 높은 경우나 상태를 공유해야 할 때 유용합니다.스프링에서의 사용: 스프링은 기본적으로 빈을 싱글톤으로 관리합니다. 애플리케이션 컨텍스트가 로드될 때 각 빈의 인스턴스를 하나만 생성하여 재사용합니다. 이로 인해 애플리케이션 성능과 메모리 사용을 최적화할 수 있습니다.2. 팩토리 패턴 (Factory P..
-
AOP vs OOP 차이점Spring 2024. 9. 12. 17:10
1. AOP의 목적: 횡단 관심사 분리AOP는 로깅, 보안, 트랜잭션 관리와 같은 공통 기능을 비즈니스 로직과 분리하기 위해 존재합니다. 만약 비즈니스 로직 안에서 AOP를 사용하게 된다면, 결국 AOP의 주요 이점 중 하나인 비즈니스 로직과 횡단 관심사 간의 분리가 무너지게 됩니다.예를 들어, 메서드 안에 로깅이나 트랜잭션 관리 코드를 직접 작성하는 것은 기존 방식의 절차적 프로그래밍으로 돌아가는 것과 같습니다.2. 비즈니스 로직 내에서는 이미 구체적인 작업이 수행됨비즈니스 로직 내에서는 특정한 작업(예: 결제 처리, 데이터 계산)이 수행되고 있습니다. AOP는 이 작업에 직접적으로 개입하는 것이 아니라, 이 작업 전후 혹은 에러 발생 시점에서 개입해야 합니다.비즈니스 로직 안에 Advice나 Poin..
-
StepContribution 와 ChunkContext[Spring batch]Spring/Spring Batch 2024. 8. 7. 10:23
Spring Batch에서 StepContribution과 ChunkContext는 배치 처리에서 중요한 역할을 합니다. 이 두 객체는 배치 작업의 상태를 추적하고, 각 청크(chunk) 및 단계(step)의 실행 정보를 제공합니다.StepContributionStepContribution은 단계의 기여도를 나타내며, 특정 단계가 얼마나 많은 데이터를 읽고 처리했는지 등의 통계를 포함합니다. 이 객체는 주로 배치 작업의 진행 상황을 모니터링하고 기록하는 데 사용됩니다.ChunkContextChunkContext는 청크 수준에서의 컨텍스트 정보를 제공합니다. 청크는 읽기-처리-쓰기 작업의 단위이며, ChunkContext는 청크 처리 중에 발생하는 상태 정보를 유지합니다. 예제 시나리오실생활 예제로는 은행..
-
Tasklet과 ItemReader, ItemProcessor, ItemWriter란?Spring/Spring Batch 2024. 7. 26. 11:46
Contents --> Tasklet목적: 배치 작업에서 단일 태스크를 정의합니다. 주로 간단한 작업을 수행할 때 사용합니다. , Tasklet은 Step에서 단일 작업을 정의할 때 사용됩니다. 간단한 파일 읽기, 쓰기, 데이터베이스 작업 등에 적합합니다.구현 방법: Tasklet 인터페이스를 구현하고 execute 메서드를 오버라이드하여 작업을 정의합니다.Tasklet 구현 (MyTasklet)// MyTasklet.javapackage com.example.batch;import org.springframework.batch.core.StepContribution;import org.springframework.batch.core.scope.context.ChunkContext;import org...
-
Spring에서 @Autowired를 사용하는 것보다 생성자 주입 방식이 나은 이유?Spring 2024. 7. 24. 10:33
Spring에서 @Autowired를 사용하는 것보다 생성자를 통해 구성하는 방식이 더 나은 이유는 다음과 같습니다:불변성(Immutable) 보장: 생성자 주입은 필드를 final로 선언할 수 있게 하여 객체의 불변성을 보장합니다. 불변 객체는 상태 변화를 방지하여 안전성을 높입니다.명시적 의존성(Explicit Dependency): 생성자 주입은 클래스의 의존성을 명확하게 보여줍니다. 어떤 의존성이 필요한지 명확하게 드러나기 때문에 코드의 가독성이 향상됩니다.테스트 용이성(Testability): 생성자 주입을 사용하면 테스트 코드에서 setter나 리플렉션을 사용하지 않고도 의존성을 쉽게 주입할 수 있습니다. 따라서 단위 테스트 작성이 더 용이합니다.순환 의존성 방지: 생성자 주입은 순환 의존성을..
-
[Spring 핵심 알기 - 2] HandlerMapping란? HandlerMapping 분석(with. DispatherServlet)Spring/Spring Core 2024. 5. 23. 16:48
Contents --> --> --> --> --> -->Sring MVC 구성도시작에 앞서...위 구성도에서 보듯 DispatcherServlet이 중심에서 컨트롤 하는것을 볼수있다.DispathcServlet을 모른다면 아래에 링크를 타고 공부하고 오자 2024.02.22 - [Spring] - [Spring 핵심 알기 - 1] DispatcherServlet 란? frontController 패턴 (with. 전자정부프레임워크 ) DispatchServlet은 요청에 대한 내용들을 처리할수있도록 구성을 정의 해놓았는데, DispatcherServlet.properties를 검색하면 아래와같이 설정된 내용들이 나온다. # Default implementation classes fo..