getBean()
을 제공한다.그래서 ApplicaitonContext는 굉장히 다양한 interface를 상속 받고있다.
아래는 그중 4개만을 소개한 내용이다.
MessageSource : 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력
EnvironmentCapable(환경변수) : 로컬, 개발, 운영등을 구분해서 처리
ApplicationEventPublisher : 이벤트를 발생하고 구독하는 모델을 편리하게 지원
ResouceLoader : 파일, 클래스패스, 외부등에서 리소스를 편리하게 지원
- BeanFactory를 직접 사용할 일은 거의 없다. 더 많은 기능을 갖고있는 ApplicationContext를 사용한다.
- BeanFactory나 ApplicationContext를 스프링 컨테이너라 부른다.
@Configuration
,@Bean
등)를 이용하여 AppConfig를 설정하였는데 이번엔 XML로 설정하는 법을 알아보자.스프링 컨테이너는 다양한 형식의 설정 정보를 받아드릴 수 있게 설계되었다.
물론 최근 10년동안은 거의 사용하지 않지만 몇몇 lagacy 코드들이 xml로 이루어져있기 때문에 방법을 알아두는 것도 나쁘지 않다.
또 장점은 컴파일없이 빈 설정 정보를 변경할 수 있다는 장점이 있다.
GenericXmlApplicationContext
를 사용하여 xml
설정 파일을 넘기면 된다.
그럼 우선 xml 파일 생성부터 해보자.
일단 자바 코드가 아닌 것은 모두 다 resources에 때려 박으면 되고 xml도 그냥 말고 스프링 관련 xml이 있기 때문에 위 사진처럼 들어가서 생성하면 된다.
최초 생성할 땐 왼쪽 빨간 네모 박스 코드가 없는데 작성하면 되고 그러면 오른쪽에 JAVA로 작성한 코드와 왼쪽에 XML로 작성한 각각의 빨간 네모 박스가 완전히 동일한 기능을 한다.
테스트 코드 실행
public class XmlAppContext {
@Test
void xmlAppContext(){
ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml");
MemberService memberService = ac.getBean("memberService", MemberService.class);
assertThat(memberService).isInstanceOf(MemberService.class);
}
}