일단 기본적인 용어부터 정리해보자.
Context
-> 시작점, 기본, 베이스, 최상위, 흐름의 시작점
Context Path
-> 사용자가 서버로 요청할 때 최상위 경로. 경로의 시작. 보통 /
스프링 컨테이너
-> GenericApplicationContext 실행 시, Context 객체 생성 = 컨테이너 생성
-> 의존 주입, 객체 제어까지 즉, 객체들을 관리해주는 상자
-> 초기화까지 진행된다는 것을 깔고 가자
cf) jsp에서는 톰캣이 스프링 컨테이너의 역할을 했다고 보면 될듯
이제 본격적으로 스프링 컨테이너의 생애를 살펴보자.
이제 기본적인 Bean 객체의 생애를 살펴보자.
Bean 생성과 소멸 관련 메서드들을 살펴보자.
- 객체를 생성할 때 호출되는 메서드가 정의된 인터페이스 : InitializingBean
- 객체가 소멸될 때 호출되는 메서드가 정의된 인터페이스 : DisposableBean
즉, Bean 객체의 생애를 정리하면 객체 생성 -> 의존 설정 -> 초기화 -> 소멸
생성과 소멸 관련 인터페이스를 사용하지 않고,
커스텀 메서드를 통해서도 빈의 생성과 소멸을 다룰 수 있다.
xml 설정이 아닌 자바 설정을 사용하여도 동일한 효과를 얻을 수 있다.
아래는 똑같은 내용을 담은 xml 파일 내용이다.
<!-- Client2 안에 생성과 초기 관련 인터페이스를 오버로딩한 메서드가 이미 구현되어있음. 그것을 사용. -->
<bean id="client2" class="spring.Client2">
<property name="host" value="서버"/>
</bean>
<!-- 인터페이스를 구현하지 않고 내가 직접 메서드를 만들어서 객체가 생성될 때, 사라질 때에 맞게 호출 가능 -->
<bean id="client3" class="spring.Client3" init-method="connect" destroy-method="closeConnection">
<property name="host" value="서버"/>
</bean>
인터페이스, 커스텀 메서드를 이용하지 않고, 객체 소멸 시에 사용되는 메서드가 있다.
그것은 바로 close() 메서드. 차이점을 확인해보자.
프로토타입과 싱글톤
싱글톤이냐 아니냐의 차이
즉, 빈 객체 하나 당 객체를 하나만 만들 수 있는지 (싱글톤)
아니면 빈 객체 하나당 여러 개의 객체를 만들 수 있는지(프로토타입 적용)의 차이
프로토타입을 설정하게 되면 같은 빈 객체로 getBean을 해도 계속 다른 객체가 나옴
하지만 단점도 있다.
프로토타입을 설정하게 되면 스프링이 그 순간 손을 놔버림 = 제어를 하지 않음
그래서 빈 컨테이너 관리를 안하고 개발자가 직접 관리를 해줘야함
그래서 생성 소멸 같은 컨테이너가 알아서 해주던 것을 내가 직접 만들어 해줘야함
'SPRING' 카테고리의 다른 글
AOP 개념 및 적용 - Before (0) | 2020.09.23 |
---|---|
jar 파일 (0) | 2020.09.22 |
Java 설정 파일 + XML 설정 파일 함께 사용하기 (0) | 2020.09.22 |
Java 설정 파일 쪼개기 - @Import (0) | 2020.09.22 |
Java 설정 파일 - 직접 주입 / 자동 주입 어노테이션 (0) | 2020.09.22 |