반응형
"김영한 스프링 핵심 원리 기본편" 내용을 기반으로 작성한 내용입니다.
📝BeanFactory, ApplicationContext
BeanFactory
스프링 컨테이너의 최상위 인터페이스로 빈을 관리하고 조회하는 역할을 담당한다.
Application Context
BeanFactory의 기능을 상속받아 더 많은 기능을 제공하고 BeanFactory를 사용하는 게 아닌 Application Context를 주로 사용한다
- MessageSource
- 국제화
- Environment
- 로컬, 개발, 운영 구분해서 처리
- Application Event
- 이벤트 발행하고 구독하는 모델 편리 지원
- ResourceLoader
- 파일, 클래스패스, 외부 등 리소스 편리하게 조회 기능
📝 Annotation 방식 vs XML 방식
Annotation 기반 코드
Annotation을 이용해 Bean에 등록하고 관리하기 쉽게 도와준다. 지금까지 해온 방식이다.
XML 기반 코드
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://
www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="memberService" class="hello.core.member.MemberServiceImpl">
<constructor-arg name="memberRepository" ref="memberRepository" />
</bean>
<bean id="memberRepository"class="hello.core.member.MemoryMemberRepository" />
<bean id="orderService" class="hello.core.order.OrderServiceImpl">
<constructor-arg name="memberRepository" ref="memberRepository" />
<constructor-arg name="discountPolicy" ref="discountPolicy" />
</bean>
<bean id="discountPolicy" class="hello.core.discount.RateDiscountPolicy" />
</beans>
최근에는 스프링 부트를 많이 사용하며 XML 기반 설정은 잘 사용하지 않는다.
📝 빈 설정 메타 정보 (BeanDefinition)
기본적으로 특정 Reader가 존재해 Bean 설정 정보를 읽고 메타 정보를 만들어 사용하게 된다. BeanDefinition에는 Bean의 메타정보들이 들어있다. 직접 Reader와 Definition을 Bean의 작성방식을 내 임의대로 커스텀해서 만들 수도 있지만 거의 사용되진 않는다.
반응형