Develop Artifacts/Spring

Spring - 07. spring mvc

HTTP 요청이 @RestController 메서드에 도달하기까지 — Spring MVC의 처리 흐름브라우저에서 POST /api/orders를 보냈다. Spring MVC 내부에서는 — DispatcherServlet이 요청을 받고, HandlerMapping이 컨트롤러 메서드를 찾고, HandlerAdapter가 매개변수를 바인딩하고, 메서드를 실행하고, 결과를 JSON으로 변환하여 응답한다. 이 전체 과정을 이해하면 — 404의 원인, @RequestBody와 @ModelAttribute의 차이, 예외 처리 흐름을 추적할 수 있다.이 글은 Spring MVC의 요청 처리 파이프라인, DispatcherServlet의 역할, 컨트롤러 패턴, 그리고 Spring 7의 Servlet 6.1 기반 변경점을..

Develop Artifacts/Spring

Spring - 06. aop

@Transactional이 같은 클래스 내부 호출에서 동작하지 않는 이유 — AOP와 프록시@Servicepublic class OrderService { @Transactional public void placeOrder(Order order) { ... } // 트랜잭션 적용됨 public void bulkOrder(List orders) { for (Order order : orders) { placeOrder(order); // 내부 호출 — @Transactional이 동작 안 함! } }}placeOrder()에 @Transactional이 붙어 있지만, 같은 클래스 내부에서 호출하면 트랜잭션이 적용되지 않는다. 원인은..

Develop Artifacts/Spring

Spring - 05. bean scope profile

singleton bean에 state를 넣으면 안 되는 이유 — 스코프와 프로파일웹 애플리케이션에서 @Service UserContext bean에 사용자 ID를 저장했다. 동시에 100명의 사용자가 접속하면 — 마지막 사용자의 ID가 모든 요청에 보인다. singleton bean은 모든 스레드가 공유하므로, 상태를 넣으면 경쟁 조건이 발생한다. 이 글은 bean 스코프의 종류, prototype의 함정, 그리고 @Profile로 환경을 분리하는 방법을 풀어간다.Bean 스코프 — bean의 생명 주기 정책flowchart TD S["singleton (기본)컨테이너당 1개 인스턴스"] --> P["prototype요청마다 새 인스턴스"] P --> R["request (웹)HTTP 요청마..

Develop Artifacts/Spring

Spring - 04. configuration component-scan

@Configuration이 싱글톤을 보장하는 원리 — CGLIB 프록시와 컴포넌트 스캔@Configurationpublic class AppConfig { @Bean public A a() { return new A(b()); } // b()를 직접 호출 @Bean public B b() { return new B(); }}a()에서 b()를 직접 호출하면 new B()가 두 번 실행될까? — 아니다. @Configuration 클래스는 CGLIB 프록시로 감싸져서, b()를 호출하면 컨테이너에 이미 등록된 bean을 반환한다. 이것이 Spring의 싱글톤 보장 메커니즘이다. (Spring Framework Reference - Java-based Container Config..

Develop Artifacts/Spring

Spring - 03. dependency-injection

@Autowired가 어떤 bean을 선택하는가 — 의존성 주입 패턴과 충돌 해결PaymentGateway 인터페이스를 구현한 bean이 3개다 — StripeGateway, TossGateway, MockGateway. Spring에 @Autowired PaymentGateway gateway를 요청하면 어떤 bean이 주입되는가? Spring은 타입으로 찾고, 이름으로 구분하고, 여전히 모호하면 예외를 던진다.이 글은 세 가지 주입 방식(생성자, 세터, 필드)의 차이, @Qualifier로 모호성을 해결하는 방법, 그리고 @Lazy와 선택적 주입(Optional) 패턴을 풀어간다. (Spring Framework Reference - DI)세 가지 주입 패턴1. 생성자 주입 (권장)// Spring ..

Develop Artifacts/Spring

Spring - 02. container bean lifecycle

Bean이 생성되고 사라지기까지 — 컨테이너와 생명주기의 모든 단계Spring 애플리케이션이 시작됐다. 컨테이너는 수백 개의 bean을 생성하고, 의존성을 주입하고, 초기화 콜백을 부르고, 애플리케이션에 서비스를 제공한다. 종료 시에는 반대로 소멸 콜백을 부르고 bean을 제거한다. 이 전체 과정이 bean 생명주기(lifecycle)다.이 과정을 모르면 — @PostConstruct가 언제 호출되는지, BeanPostProcessor가 어디에 끼어드는지, 순환 의존성이 왜 실패하는지 이해할 수 없다. 이 글은 bean이 인스턴스화에서 소멸까지 거치는 모든 단계를 순서대로 풀어간다. (Spring Framework Reference - Lifecycle Callbacks)BeanFactory vs App..

Archive

'spring' 7

Develop Artifacts/Spring

Spring - 07. spring mvc

HTTP 요청이 @RestController 메서드에 도달하기까지 — Spring MVC의 처리 흐름브라우저에서 POST /api/orders를 보냈다. Spring MVC 내부에서는 — DispatcherServlet이 요청을 받고, HandlerMapping이 컨트롤러 메서드를 찾고, HandlerAdapter가 매개변수를 바인딩하고, 메서드를 실행하고, 결과를 JSON으로 변환하여 응답한다. 이 전체 과정을 이해하면 — 404의 원인, @RequestBody와 @ModelAttribute의 차이, 예외 처리 흐름을 추적할 수 있다.이 글은 Spring MVC의 요청 처리 파이프라인, DispatcherServlet의 역할, 컨트롤러 패턴, 그리고 Spring 7의 Servlet 6.1 기반 변경점을..

댓글
Develop Artifacts/Spring

Spring - 06. aop

@Transactional이 같은 클래스 내부 호출에서 동작하지 않는 이유 — AOP와 프록시@Servicepublic class OrderService { @Transactional public void placeOrder(Order order) { ... } // 트랜잭션 적용됨 public void bulkOrder(List orders) { for (Order order : orders) { placeOrder(order); // 내부 호출 — @Transactional이 동작 안 함! } }}placeOrder()에 @Transactional이 붙어 있지만, 같은 클래스 내부에서 호출하면 트랜잭션이 적용되지 않는다. 원인은..

댓글
Develop Artifacts/Spring

Spring - 05. bean scope profile

singleton bean에 state를 넣으면 안 되는 이유 — 스코프와 프로파일웹 애플리케이션에서 @Service UserContext bean에 사용자 ID를 저장했다. 동시에 100명의 사용자가 접속하면 — 마지막 사용자의 ID가 모든 요청에 보인다. singleton bean은 모든 스레드가 공유하므로, 상태를 넣으면 경쟁 조건이 발생한다. 이 글은 bean 스코프의 종류, prototype의 함정, 그리고 @Profile로 환경을 분리하는 방법을 풀어간다.Bean 스코프 — bean의 생명 주기 정책flowchart TD S["singleton (기본)컨테이너당 1개 인스턴스"] --> P["prototype요청마다 새 인스턴스"] P --> R["request (웹)HTTP 요청마..

댓글
Develop Artifacts/Spring

Spring - 04. configuration component-scan

@Configuration이 싱글톤을 보장하는 원리 — CGLIB 프록시와 컴포넌트 스캔@Configurationpublic class AppConfig { @Bean public A a() { return new A(b()); } // b()를 직접 호출 @Bean public B b() { return new B(); }}a()에서 b()를 직접 호출하면 new B()가 두 번 실행될까? — 아니다. @Configuration 클래스는 CGLIB 프록시로 감싸져서, b()를 호출하면 컨테이너에 이미 등록된 bean을 반환한다. 이것이 Spring의 싱글톤 보장 메커니즘이다. (Spring Framework Reference - Java-based Container Config..

댓글
Develop Artifacts/Spring

Spring - 03. dependency-injection

@Autowired가 어떤 bean을 선택하는가 — 의존성 주입 패턴과 충돌 해결PaymentGateway 인터페이스를 구현한 bean이 3개다 — StripeGateway, TossGateway, MockGateway. Spring에 @Autowired PaymentGateway gateway를 요청하면 어떤 bean이 주입되는가? Spring은 타입으로 찾고, 이름으로 구분하고, 여전히 모호하면 예외를 던진다.이 글은 세 가지 주입 방식(생성자, 세터, 필드)의 차이, @Qualifier로 모호성을 해결하는 방법, 그리고 @Lazy와 선택적 주입(Optional) 패턴을 풀어간다. (Spring Framework Reference - DI)세 가지 주입 패턴1. 생성자 주입 (권장)// Spring ..

댓글
Develop Artifacts/Spring

Spring - 02. container bean lifecycle

Bean이 생성되고 사라지기까지 — 컨테이너와 생명주기의 모든 단계Spring 애플리케이션이 시작됐다. 컨테이너는 수백 개의 bean을 생성하고, 의존성을 주입하고, 초기화 콜백을 부르고, 애플리케이션에 서비스를 제공한다. 종료 시에는 반대로 소멸 콜백을 부르고 bean을 제거한다. 이 전체 과정이 bean 생명주기(lifecycle)다.이 과정을 모르면 — @PostConstruct가 언제 호출되는지, BeanPostProcessor가 어디에 끼어드는지, 순환 의존성이 왜 실패하는지 이해할 수 없다. 이 글은 bean이 인스턴스화에서 소멸까지 거치는 모든 단계를 순서대로 풀어간다. (Spring Framework Reference - Lifecycle Callbacks)BeanFactory vs App..

댓글

wall

방명록

방문 흔적을 남겨주세요. 질문이나 인사 모두 환영합니다.