Spring BeanFactory와 ApplicationContext, (feat.XML로 설정하기)

강정우·2023년 11월 1일
0

Spring-boot

목록 보기
8/73
post-thumbnail

BeanFactory와 ApplicationContext

BeanFactory

  • 객체의 최상위가 object가 있는것 처럼 BeanFactory가 존재한다.
    즉, 스프링 컨테이너의 최상위 인터페이스이다.
  • 스프링 빈을 관리하고 조회하는 역할을 담당한다.
  • getBean()을 제공한다.

ApplicationContext

  • BeanFactory 기능을 모두 상속받아서 제공한다.
  • 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해준다.
  • 애플리케이션을 개발할 때는 빈은 관리하고 조회하는 기능은 물론 수 많은 부가기능이 필요하다.

  • 그래서 ApplicaitonContext는 굉장히 다양한 interface를 상속 받고있다.
    아래는 그중 4개만을 소개한 내용이다.

  • MessageSource : 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력
    EnvironmentCapable(환경변수) : 로컬, 개발, 운영등을 구분해서 처리
    ApplicationEventPublisher : 이벤트를 발생하고 구독하는 모델을 편리하게 지원
    ResouceLoader : 파일, 클래스패스, 외부등에서 리소스를 편리하게 지원

  1. BeanFactory를 직접 사용할 일은 거의 없다. 더 많은 기능을 갖고있는 ApplicationContext를 사용한다.
  2. BeanFactory나 ApplicationContext를 스프링 컨테이너라 부른다.

XML로 스프링 컨테이너 설정하기

  • 앞서 JAVA코드(@Configuration,@Bean 등)를 이용하여 AppConfig를 설정하였는데 이번엔 XML로 설정하는 법을 알아보자.

  • 스프링 컨테이너는 다양한 형식의 설정 정보를 받아드릴 수 있게 설계되었다.

  • 물론 최근 10년동안은 거의 사용하지 않지만 몇몇 lagacy 코드들이 xml로 이루어져있기 때문에 방법을 알아두는 것도 나쁘지 않다.
    또 장점은 컴파일없이 빈 설정 정보를 변경할 수 있다는 장점이 있다.

  • GenericXmlApplicationContext를 사용하여 xml설정 파일을 넘기면 된다.
    그럼 우선 xml 파일 생성부터 해보자.


  1. 일단 자바 코드가 아닌 것은 모두 다 resources에 때려 박으면 되고 xml도 그냥 말고 스프링 관련 xml이 있기 때문에 위 사진처럼 들어가서 생성하면 된다.

  2. 최초 생성할 땐 왼쪽 빨간 네모 박스 코드가 없는데 작성하면 되고 그러면 오른쪽에 JAVA로 작성한 코드와 왼쪽에 XML로 작성한 각각의 빨간 네모 박스가 완전히 동일한 기능을 한다.

  3. 테스트 코드 실행

public class XmlAppContext {
    @Test
    void xmlAppContext(){
        ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml");
        MemberService memberService = ac.getBean("memberService", MemberService.class);
        assertThat(memberService).isInstanceOf(MemberService.class);
    }
}
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글