본문 바로가기

Spring Boot

(2)
@Bean method must not be private or final @Configuration class의 method 에 @Bean annotation을 붙여서 Spring bean을 등록할 수 있다. 이 때 method는 private이거나 final 이면 안된다. 우리는 @Bean annotaion이 붙은 method를 호출할 때, 항상 같은 Object를 반환하는 것을 확인할 수 있다. 이는 Spring이 @Configuration class의 CGLIB proxy를 생성하고, @Bean method를 호출을 가로채 하나의 Object만 반환하도록 하기 때문이다. 이 CGLIB 은 상속을 기반으로 proxy 객체를 생성한다. private 이나 final method는 상속이 불가능하기 때문에, bean으로서의 역할을 하는 method의 구현이 불가능해진다. 그래..
JPA 엔티티 매니저 팩토리와 엔티티 매니저 요청이 올 때마다 엔티티 메니저를 생성한다. 영속성 컨텍스트 - 엔티티의 라이프 사이클을 관리하는 곳이다. 1차 캐시라고 생각하면 된다. EntityManager안에 PersistenceContext가 1:1매핑된다. 비영속 상태 - 생성만한 상태 영속 상태 - 관리되는 상태 준영속 - 관리가 안되도록 분리한 상태 삭제 - 객체를 삭제한 상태 1차 캐시는 찰나의 순간에서만 이득이 있다. 비지니스 로직이 복잡한 경우에는 이점이 있겠지만 전체에서 공유를 하는 것은 2차 캐시이다. 쓰기지연 SQL 저장소 ActionQueue에 변경 사항이 일어났을 때, 수행해야될 SQL들을 쌓아둔다. insert의 경우에는 EntityInsertAction, update의 경우에는 Ent..