#3. Spring Container

박주현·2023년 8월 2일
0

Spring

목록 보기
4/12
post-thumbnail

1. 스프링 컨테이너(Spring container)

스프링 프레임워크의 핵심 컴포넌트로 자바 객체의 생명 주기를 관리하며 추가적인 기능을 제공.

  • 자바 객체 = 빈(Bean) 이라고 불림

스프링 컨테이너는 자바 객체인 빈을 의존성 주입(DI)의 과정으로 관리한다.
또한, BeanFactory와 ApplicationContext의 두가지로 MVC 패턴에 맞게 코드를 작성하고 Test 한다.

BeanFactory는 최상위 인터페이스로 빈을 등록,생성,조회하는 역할을 하며 getBean()을 통해 인스턴스화 한다.
ApplicationContext는 BeanFactory의 기능을 상속받아 제공하기에 부가적인 기능을 제공한다.

1.1 스프링 컨테이너 생성 과정

Java의 어노테이션 기능을 통해 설정하는데 XML을 활용한 방식도 있다.

//Configuration 클래스로 스프링 컨테이너 생성
ApplicationContext acConfig = new AnnotationConfigApplicationContext(AppConfig.class);

//XML 파일로 스프링 컨테이너 생성
ApplicationContext acXml = new GenericXmlApplicationContext("appconfig.xml");
  1. 설정 클래스를 지정해준다.
  2. 파라미터로 넘어온 설정 클래스 정보를 스프링 빈을 등록한다.
  3. 스프링 빈 의존관계를 설정
  4. 설정 정보를 참고하여 의존관계를 주입한다.

1.2 핵심 프로그래밍 모델

  1. 의존성 주입(Dependency Injection)
    : 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로 인터페이스르 사이에 두고 클래스 레벨에서는 의존관계가 고정되지 않도록하여 런타임 시에 동적으로 주입.
    유연성을 확보하고 결합도가 낮아진다.
  • 두 객체의 관계라는 관심사 분리
  • 두 객체간의 결합도 낮춤
  • 객체의 유연성 높임
  • 테스트 작성을 용이

정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다.

  1. 제어의 역전(Inversion of Control)
    구현 객체가 프로그램의 제어 흐름을 스스로 하는 것이 기본이지만, 제어의 흐름은 외부에서 관리한다.
    스프링 프레임워크가 프로그램을 제어하기에 개발자의 편의를 위해 제공된다.



아직까지 완벽하게 이해되지 않는 느낌이라...
깊게 학습하여 포스팅을 보완해나가야겠다

profile
빌드업 막 시작하는 개발자

1개의 댓글

comment-user-thumbnail
2023년 8월 2일

많은 도움이 되었습니다, 감사합니다.

답글 달기