Skip to content

spring 컨테이너 #

Find similar titles

2회 업데이트 됨.

Edit
  • 최초 작성자
    javis
  • 최근 업데이트
    javis

Structured data

Category
Programming

Spring 컨테이너란? #

주입을 이용하여 객체를 관리하는 컨테이너이다. 컨테이너의 사전적 의미는 무언가를 담는 용기, 즉 그릇을 의미한다. 이를 통해 접급하자면 컨테이너는 객체관리를 주로 수행하는 그릇정도로 이해할 수 있다. 빈의 생성과 관계, 사용, 생명 주기등을 관장한다. 컨테이너를 통해 시스템 전반에서 언제는 사용가능하다.

image

그림1 스프링 컨테이너

출처: https://zetawiki.com/wiki/%EC%8A%A4%ED%94%84%EB%A7%81_IoC_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88

사용이유 #

image

그림2 객체를 이용하는 방법

출처: http://private.tistory.com/39

사실, 프로그래밍에서 그릇, 또는 용기로 이해될 수 있는 비슷한 요소들이 많이 있다. 그렇다면 왜 Spring에서는 굳이 스프링 컨테이너 기능을 제공하는 것일까? 우리는 객체를 사용하기 위해서 new 생성자를 이용하거나 getter/setter 기능을 써야만 했다. 한 어플리케이션에는 이러한 객체가 무수히 많이 존재하고 서로 참조하고 있을 것이다. 그 정도가 심할 수록 의존성이 높다고 표현한다. 낮은 결합도와 높은 캡슐화로 대변되는 객체지향프로그래밍에서 높은 의존성은 아니꼬울 수 밖에 없다. 의존성 제어, 즉 객체 간의 의존성을 낮추기 위해 바로 Spring 컨테이너가 사용된다.

image

그림3 스프링 컨테이너를 이용한 객체 사용 방법

출처: http://private.tistory.com/39

주요용어 #

  • POJO

    • 어플리케이션의 핵심 코드를 담고 있는 클래스
    • Plain Old Java Object, 직역하면 오래된 방식의 자바 객체라는 뜻으로 특정 환경에 종속없는 단순 클래스이다. 종속되지 않는 다는 것은 코드를 간결히 할 수 있고, 객체지향 설계를 충실히 이행하고 있음을 보여준다.
  • Bean

    • 스프링 컨테이너가 생성하고 관리하는 어플리케이션 객체

스프링 컨테이너의 종류 #

BeanFactory #

영어 그대로 빈 공장이다. 빈 객체를 생성하고 관리하는 클래스이다. 디자인패턴의 일종인 팩토리 패턴을 구현한 것이다. BeanFactory fac = new XmlBeanFactory(new FileInputStream("bean.xml")); MyBean myBean = (Mybean) factory.getBean("myBean"); getBean()을 호출함으로서 팩토리는 의존성 주입을 통해 빈 객체를 생성하고 관리한다.

ApplicationContext #

빈팩토리와 유사하지만 향상된 형태의 컨테이너이다. 빈 팩토리와의 차이점은 ApplicationContext 컨테이너는 다음과 같은 추가 기능을 제공한다.

  • 국제화 지원 텍스트 메시지 관리
  • 이미지 파일 로드
  • 리스너로 등록된 빈에게 이벤트 발생 통보

image

그림4 BeanFactory ApplicationContext Difference

출처: http://theplacard.in/spring-interview-questions-and-answers/

생명주기 #

컨테이너의 생명주기 #

생성, 설정, 사용, 종료로 주기를 네 부분으로 나눌 수 있다.

image

그림5 컨테이너의 생명주기

출처: http://blog.naver.com/k220j/220728925820

빈의 생명주기 #

    implements InitializingBean : 빈 초기화 과정에서 호출 -> @PostConstruct
    implements DisposableBean : 빈 소멸 과정에서 호출 -> @PreDestory

image

그림6 빈의 생명주기

출처: http://blog.naver.com/k220j/220728925820

관련 키워드 #

스프링, SPRING, 컨테이너, Container, framework, bean, controller, bean, , ioc, spring ioc, bean scope, ioc 컨테이너, spring framework container

0.0.1_20230725_7_v68