인실리코젠

[인실리코젠] Spring : 용어 정리(기본)

min._.uuk_ 2024. 1. 19. 11:08

컨테이너

  • 프레임워크 안에서 인스턴스들의 생명 주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 부여
  • 작성한 코드의 처리 과정을 컨테이너에서 수행
  • 스프링 컨테이너는 스프링 프레임워크 핵심에 위치하며, DI를 통해 애플리케이션을 구성하는 컴포넌트를 관리

IOC 컨테이너

  • Inversion Of Control : 제어의 역전
  • 인스턴스의 생성 및 소멸을 개발자 대신 컨테이너가 해줌
  • 필요한 이유 
    1. 컴포넌트 / 오브젝트가 자유로운 삽입이 가능하도록 하기 위해
    2. 서비스의 configuration이 일관성을 갖도록 하기 위해
    3. 단일화된 서비스의 접근 방법 제공
    4. 비지니스 오브젝트에 부가적인 enterprise service 제공

DI

  • Dependency Injection : 의존성 주입
  • 의존성이 있는 컴포넌트를 개발자가 코드로 명시하는 것이 아니라 Spring이 런타임에서 연결해 처리
  • 의존적인 객체를 직접 생성하거나 제어하는 것이 아니라 특정 객체에 필요한 객체를 외부에서 결정해 연결

Spring MVC 흐름

  • 요청된 url을 dispatcher-servlet으로 전달
  • 핸들러 매핑은 해당 url에 매핑된 컨트롤러가 있는지 검사 후 컨트롤러에 전달
  • 해당 컨트롤러가 로직 처리
  • Model , View 객체 생성 후 로직의 결과를 담아 dispatcher-servlet에 전달
  • dispatcher-servelt은 전달 받은 뷰가 있는지 검사하기 위해 ViewResolver로 보냄
  • ViewResolver는 받은 뷰가 있는지 검사 후 뷰로 보냄
  • 모델과 같이 뷰를 그린 후에 dispatcher-servlet으로 보냄
  • 최종 컨텐츠를 클라이언트에게 전달

Bean 객체

  • 자바에서 POJO(Plain Old Java Object) 로 xml 설정 파일을 통한 생명주기, 종속성 등의 메타데이터를 가지고 스프링 컨테이너에서 생성된 객체
  • 컨테이너가 생성되었다는 점을 제외하면 일반 자바 객체와 같음

VO

  • Value Object : 값을 갖고 있는 객체
  • 비지니스 값을 가져올때 사용
  • 보통 값을 수정할 수 없는 것으로 함
  • 즉, Getter만 존재하고 Setter는 없는 것이 일반적임

DTO

  • Data Transfer Object : VO와 같이 값을 갖고 있는 객체
  • VO와의 차이점은 하나의 인스턴스로, 데이터 핸들링에 사용되는 객체
  • DTO를 통해 데이터를 전달할 수 있음

DAO

  • Data Access Object : 실제 DB에 접속하는 객체
  • Service와 DB 사이에서 가져온 데이터를 엔터티로 변환시켜 가져옴