[Spring] 용어정리

김빛나리·2020년 7월 9일

1. JSP Model1, Model2, Spring MVC pattern 차이

  • Model1
    • Servlet(Controller)파일인 jsp 파일안에서 view와 logic을 처리한다.
    • 구성 요소
      • JSP(View + Controller): Java 코드의 출력을 위한 코드 있음
      • Java Bean(Model)
    • 장점
      • 단순한 구조
      • 쉬운 설계
    • 단점
      • 복잡한 코드
      • 어려운 분업
      • 어려운 유지보수
      • 보안이 좋지 않음
    • 개발자가 사용하기엔 좋지만, 디자이너가 작업하기 어렵다.
  • Model2
    • Servlet(Controller)는 Java Bean(Model)로 부터 객체를 자겨오고 JSP(View)에 요청을 보낸 후, JSP(View)와 Java Bean(Model)은 서로 함수를 호출하고 통신한다.
    • 구성 요소
      • Servlet(Controller): 흐름 제어
      • JSP(View): 요청결과를 user에게 보여줌
      • Java Bean(Model): logic처리
    • 장점
      • 쉬운 유지보수
      • 간단한 코드
      • 쉬운 분업
    • 단점
      • 복잡한 구조
      • 습득하기 어려움
      • 많은 작업량
    • Model1과 Model2는 완전히 반대되는 장점과 단점을 가지고 있으므로 상황에 따라 적절한 선택을 하는 것이 좋다.
  • Spring MVC pattern
    • MVC(Model-View-Controller)
    • Model2와 MVC 패턴의 형태는 완전히 같은 형태
    • MVC 패턴(Model2)
      • Model(Java Bean)
      • View(JSP)
      • Controller(Servlet)

2. Spring framework

  • Spring 이라고도 불린다.
  • java 엔터프라이즈 개발을 위한 경량급 오픈소스 애플리케이션 프레임워크
    • 크기와 부하의 측면에서 경량
    • 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
  • 우리나라 공공기관에서 웹 서비스 개발시 사용을 권장하는 전자정부 표준프레임워크의 기반 기술
  • 특징
    • POJO(Plain Old Java Object)
      • 상속, 인터페이스가 필요없는 객체
      • 순수하게 getter, setter로 이루어진 bean
    • DI(Dependency Injection)
      • 의존형 주입
      • 객체의 의존성을 외부에서 주입하는 개념 -> 각각 의존성이 존재할 경우 Spring이 서로 연결시켜줌
      • 애플리케이션 구성
      • ex) 다양한 DB 사용 가능
    • AOP(Aspect Orientated Programming)
      • 관점지향프로그래밍
      • 여러 곳에서 공통적으로 쓰이는 기능들을 분리하여 관리
      • 횡단 관심사 분리
    • PSA(Portable Service Abstraction)
      • 일관된 서비스 추상화
      • 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하려는 추상화 구조

3. Spring boot

  • 독립실행형 애플리케이션을 생성
  • tomcat, jettry, undertow를 내장
  • 스프링, 외부 라이브러리 자동 설정
  • starter 컴포넌트 쉽게 추가

4. IoC(Inversion of Control)

  • 역제어 -> 제어의 주체가 바뀜
  • 보통 자바 기반으로 애플리케이션을 개발할 때 자바 객체를 생성하고 서로간의 의존 관계를 연결시키는 작업에 대한 제어권은 개발되는 애플리케이션에 있지만 Servlet, EJB 등 사용하는 경우 각각의 Container에게 제어권이 넘어간다.
  • 객체의 생성~생명주기 관리, 모든 객체에 대한 제어권이 바뀐 것을 의미

5. DI

  • Constructor Injection
    • 생성자를 이용한 의존성 주입
    • 필요한 의존성을 모두 포함하는 클래스의 생성자를 만들고 그 생성자를 통해 의존성을 주입
    • 생성자에 파라미터를 만들어두고 DI 컨테이너가 의존할 object 레퍼런스를 넘겨주는 방식
  • Setter Injection
    • setter() method를 이용한 의존성 주입
    • 의존성을 입력받는 setter method를 만들고 이를 통해 의존성을 주입
    • setter() method는 외부에서 object 내부의 attribute값을 변경하려는 용도로 사용 -> 파라미터로 전달받은 값을 내부의 인스턴스 변수에 저장하는 것
  • Interface Injection
    • 초기화 인터페이스를 이용한 의존성 주입
    • 의존성을 주입하는 함수를 포함한 인터페이스를 작성하고 실행할 때에 이를 통하여 의존성을 주입
    • public interface를 정의한 후, 구현하면 DI가 이루어지도록 한다.

6. DTO(Data Transfer Object)

  • VO(Value Object)로 바꿔 말할 수 있음 (단, VO는 read만 가능)
  • 계층간 데이터 교환을 위한 객체? Java Beans?
  • 계층간의 컨트롤러, View, 비지니스 계층, 퍼시스턴스 계층

7. DAO(Data Access Object)

  • 실질적으로 DB에 접근하는 객체
  • Dasabase의 data에 access하는 트랜잭션 객체
  • 효율적인 커넥션 관리와 보안성
  • DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 object

0개의 댓글