Skip to content

Spring FrameWork

hyunwoo9301 edited this page Jul 22, 2017 · 7 revisions

프레임워크란

뼈대가 되는 구조를 미리 작성해 놓고, 그 뼈대를 토대로 구체적인 개발을 하는 방법을 제공하는 미들웨어


계층화 아키텍처

  1. 프레젠테이션 계층
  • 사용자로 부터 데이터를 입력받거나 출력해 보이는 계층
  • 이벤트 처리 및 데이터 포멧팅을 담당
  1. 제어 계층
  • 구성 요소간 처리 흐름 제어
  • 요청을 검증하고, 로직에 요청을 전달
  • 로직의 응답을 대응되는 뷰와 연결
  1. 비즈니스 계층
  • 제어 계층과 퍼시스턴스 계층 사이를 연결
  1. 퍼시스턴스 계층
  • 데이터베이스나 파일에 접근하여 CRUD
  1. 도메인 계층
  • 데이터 객체

객체 분리

개방 폐쇄 원칙

  • 클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.
  • 높은응집도(하나의 책임에 집중)와 낮은 결합도 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다
  1. DAO(Data Access Object)
  • DB를 사용해 데이터를 CRUD하는 기능을 전담하는 객체
  • DAO를 통해서만 접근함으로써, 다수의 원격호출 오버헤드를 DTO나, VO를 통해 줄일 수 있다.
  1. POJO(Plain Old Java Object)
  • 계층간 데이터 교환을 위한 순수한 데이터 객체
  • 그 속성에 접근하기 위한 getter와 setter만 가지고 있는 클래스
  • DTO(Data Transfer Obejct) vs VO(Value Object)
    • VO - 값이 같으면 같은 오브젝트로 취급
    • DTO - 다른 오브젝트라면 값이 같더라도 다르게 취급
  1. BO
  • 비즈니스 로직을 담당
  • 비즈니스 수행을 위해 DAO 메소드를 호출함

Container

컨테이너는 인스턴스 생명주기를 관리하며, 코드의 처리과정을 위임받은 독립적인 존재

  • 사용자의 호출에 의해 스스로 코드를 참조하고 객체의 생성과 소멸을 컨트롤
    • BeanFactory: bean의 정의는 즉시 로딩, bean 자체가 필요하게 되기 전까지는 인스턴스화를 하지 않는다.(lazy loading)
    • ApplicationContext: 컨텍스트 초기화 시점에서 모든 싱글톤 bean을 로드

IoC (Inversion of Control, 제어의 역행)

객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권을 프레임워크가 가짐 (IoC 컨테이너)

DI (Dependency injection, 의존성 주입)

DI의 사용목적: 분리형으로 개발하여 결합도를 낮추는 것.

  • Constructor Injection: A의 생성자에서 B를 생성
  • Setter Injection: A가 B가 만든 C를 사용

Bean

  • Javabean: 디폴트 생성자를 가지는 POJO
  • Spring의 bean: 스프링이 제어권을 가지고 직접 생성해서 컨테이너에 등록, 컨테이너에 의해 그 생명주기가 관리되는 객체

AOP (Aspect Oriented Programming, 관점지향 프로그래밍)

  • 부가적인 업무가 주 업무에 강한 응집력을 가지고 있는 경우 서비스 추상화가 어려워진다.
  • 이러한 문제를 해결하기 위한 기법으로 OOP(Obejct Oriented Programming)의 보완적 개념
  • 핵심적인 기능에서 부가적인 기능을 분리하여 작성(Cross Cutting, 크로스 컷팅)하고, 필요할 때 도킹하여 사용
    • AOP Advice: 메인 업무에 보조적으로 추가될 보조 업무를 JAVA레벨이 아닌 XML을 통해 객체를 생성하고 인젝션

참고

http://limmmee.tistory.com/ http://ooz.co.kr/

Clone this wiki locally