Spring을 처음 접하면 @Component, @Autowired 같은 어노테이션이 낯설게 느껴진다.이 글에서는 Spring의 심장이라고 할 수 있는 두 가지 개념, IoC(제어의 역전) 와 DI(의존성 주입) 를 코드와 함께 차근차근 살펴본다.다음 코드를 보자.얼핏
이전 글에서 @Component를 붙이면 Spring이 그 클래스를 new해서 보관한다고 했다.그 보관된 객체를 Bean이라고 부른다고도 했다.이번 글에서는 Bean이 정확히 무엇인지, Container가 Bean을 어떻게 관리하는지,그리고 Bean이 언제 태어나고 언
지난 글에서 Spring Container가 Bean을 관리하고, 싱글톤으로 유지하며, 생명주기까지 책임진다는 걸 알았다. 그렇다면 자연스럽게 이런 질문이 생긴다.브라우저에서 URL을 입력하고 엔터를 누르면, Spring 내부에서 정확히 무슨 일이 벌어질까?Contro
들어가며 지난 글에서 Spring MVC의 흐름을 살펴봤다. HTTP 요청이 DispatcherServlet에 들어와서 Controller → Service → Repository 계층을 거쳐 응답으로 나가는 구조였다. 그런데 Repository 계층에서 실제로 D
이전 글에서 Spring MVC 흐름, JPA, 영속성 컨텍스트까지 살펴봤다. 이번 글에서는 그 위에 실전 코드를 올린다. 다음 세 가지 질문을 중심으로 이야기를 풀어간다. 반복적인 Getter/Setter/생성자 코드를 어떻게 없앨 수 있을까? 잘못된 데이터가 S
지난 글에서 JPA의 기본 구조와 엔티티 매핑, 그리고 @Transactional의 존재를 처음 만났다. 그런데 코드를 짜다 보면 이런 의문이 생긴다.product.decreaseStock()만 호출했는데 왜 DB에 UPDATE가 날아가지?save()를 안 불렀는데 어