본문 바로가기

강의 정리/스프링 핵심 원리 - 기본편6

7. 빈 스코프 1. 빈 스코프란 스코프 : 빈이 존재할 수 있는 범위를 뜻한다. 싱글톤 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 빈 요청을 하면, 빈 생성, 의존관계 주입, 초기화 메소드까지 호출하고 빈을 제공한다. 종료메소드는 호출되지 않는다. 프로토타입 빈의 주입까지만 관여하고 더는 관리하지 않는 짤은 범위의 스코프다. @Scope("prototype") 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. 2. 프로토타입 스코프 싱글톤은 항상 같은 인스턴스의 빈을 반환 프로토타입은 항상 새.. 2020. 12. 24.
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.