본문 바로가기

분류 전체보기89

6. 빈 생명주기 콜백 1. 빈 생명주기 콜백 시작 스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다. 객체 생성 -> 의존관계 주입 생성자 주입은 예외다. 객체 생성에 있어서, 의존관계가 주입된 후 생성되는 것이 자바의 룰이기 때문. 수정자 주입인 경우, 객체 생성 단계에서는 아직 의존관계가 주입되어있지 않다. 의존관계 주입이 모두 끝난 다음에 초기화 작업을 진행해야 한다. 의존관계 주입이 완료되면, 스프링은 콜백메소드를 통해서 알려준다. 또한, 스프링은 빈이 소멸하기 전에 소멸 콜백을 준다. 스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 스프링 빈 생성 의존관계 주입 초기화 콜백 객체를 사용 소멸전 콜백 스프링 종료 생성과 초기화를 분리하는 것이 좋다. 생성은 메모리에 올리고, 필수적인 정보 (파라미터 값 세.. 2020. 12. 23.
4. 컴포넌트 스캔 1. 컴포넌트 스캔 @ComponentScan @Component가 붙은 클래스를 빈으로 등록한다. 아래의 코드처럼, @Component가 붙어있어도 제외할 수 있다. Configuration 어노테이션이 붙은 것은 필터링해서 제외하라. @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) @ComponentScan + @Autowired를 통해서 빈 등록과 의존관계 주입을 쉽게할 수 있다. @Component public class MemberServiceImpl implements MemberService { private final Member.. 2020. 12. 17.
3. 싱글톤 컨테이너 싱글톤이란? JVM 내부에 하나의 객체 인스턴스만 존재해야 한다. 1. 웹 어플리케이션에는 왜 싱글톤을 사용하는가? 웹 어플리케이션은 보통 여러 고객이 동시에 요청을한다. 싱글톤이 아니라면 고객 3명이 요청하면 인스턴스 3개를 만들어버리는 문제 n명이 요청하면 n개를 만든다. 메모리 낭비가 심하다. 해당 객체는 딱 하나만 생성하고, 공유되게 사용하자. (싱글톤) 2. 싱글톤 패턴 static 영역에 미리 생성한 뒤, 이를 getInstance로 하여 가져와 사용하는 방법 JVM ClassLoader 가 로딩하는 과정에서, static 영역을 static 영역에 집어넣을 때, new SingletonService() 를 수행하여 넣어놓는다. static 로딩과정에 한번만 생성됐으며, getInstance로.. 2020. 12. 15.
2. 스프링 컨테이너와 스프링 빈 1. 스프링 컨테이너 (ApplicationContext) 생성 과정 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 1. AppConfig라는 클래스에 @Configuration 어노테이션이 붙어있다면, 이를 통해서 스프링 컨테이너를 생성할 수 있다. 2. 생성이 된 이후, AppConfig 내의 @Bean 어노테이션이 있는 빈들을 등록한다. 3. 스프링컨테이너가 빈 사이의 설정관계를 기초로하여 의존관계를 부여한다. 스프링은 빈 생성과, 빈 의존관계 주입의 단계가 나눠져있다. 먼저 빈 생성을 다 한뒤, 의존관계를 주입한다. 자바코드는 인스턴스를 생성하면 그 인스턴스 생성 함수 블록을 한번에 처리하기 때문에 .. 2020. 12. 13.