[Spring] Spring Framework 핵심 정리

최진민·2021년 10월 9일
3

스프링 코어

목록 보기
8/8
post-thumbnail

✨Spring Framework?

  • 자바 플랫폼을 위한 오픈소스 프레임워크
  • 엔터프라이즈(EE)급 애플리케이션을 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션
    • 즉, 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로부터 행해지는 매우 큰 규모의 환경을 엔터프라이즈 환경이라 일컫는다.
  • Spring Framework는 경량 컨테이너로 자바 객체(Bean)를 담고 직접 관리(Bean Factory)
    • 객체의 생성, 소멸 등 생명주기를 관리하여 언제든 스프링 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다. (=> IoC)


🧣POJO (Plain Old Java Object) : 경량 컨테이너

  • 평범하고 오래된 자바 오브젝트
    • POJO는 getter/setter를 가진 단순 자바 오브젝트로 정의한다.
  • 단순 오브젝트는 의존성이 없고, 테스트 및 유지보수에 유연.


🎑DI (Dependency Injection)

  • DI : 의존성 주입
  • 객체를 직접 생성하지 않고 외부에서 생성한 후, 주입시키는 방법
  • 결합도를 낮춘다.
  • 유연성을 높인다.
  • 방법 : 객체를 setter 또는 생성자를 통해 생성하여 사용한다.
  • 스프링 객체 : Bean
    • 프로젝트 실행시, 사용자가 으로 관리하는 객체들의 생성과 소멸에 관련된 작업을 자동적으로 수행 -> 객체를 관리하는 빈 컨테이너


🎁IoC (Inversion of Control)

  • Inversion of Control : 제어의 역전
  • 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아닌 외부에서 결정
  • 결합도를 낮춘다.
  • 일반적인 프로그램
    • 객체 결정 및 생성 -> 의존성 객체 생성(클래스 내부에서) -> 객채 내 메소드 호출
    • 즉, 모든 작업을 사용자가 제어
  • IoC 프로그램
    • 객체 생성 -> 의존성 객체 주입(스프링에게 제어권을 위임) -> 의존성 객체 내 메소드 호출
    • 즉, 사용자가 제어의 흐름을 컨트롤하지 않고 위임한 객체에 맡긴다.
  • 프로그램이 실행될때마다 스프링이 모든 의존성 객체를 만들어주고 필요한 곳에 주입시킨다. => Bean들이 싱글톤 패턴의 특징을 갖는다.
  • DI와 DL
    • DI는 위와 같다.
    • DL (Dependency Lookup) : 의존성 검색
      • 객체 관리를 위한 별도의 저장소에 빈을 저장하고, 컨테이너에서 제공하는 API를 이용하여 사용하고자 하는 빈을 검색


🚡AOP (Aspect Oriented Programming)

  • AOP : 관점 지향 프로그래밍
  • 여기서! OOP란?
    • OOP (Object Oriented Programming) : 객체 지향 프로그래밍
      • 객체들의 유기적인 관계를 통한 프로레스로 진행
      • 낮은 결합도 + 독립적 + 유연한 모듈로의 캡슐화
        • 중복된 코드 -> 가독성, 확장성, 유지보수성 저하 => AOP 보완
  • AOP는 핵심 기능과 공통 기능을 분리
    • 무분별한 코드를 한 곳에 모아 중복 코드를 제거하고 공통 기능을 한 곳에 보관, 공통 기능 을 수정하면 모든 핵심 기능들의 공통 기능이 변경되어 유지보수성이 향상되고 재활용성이 극대화 된다.
      • 특히, 트랜잭션, 로깅, 보안과 같은 여러 모듈에서 공용으로 사용되는 기능을 분리하여 관리


🥩구조

img

  • Spring Core
    • = Spring Container
    • Bean Factory : IoC 패턴을 적용하여 객체 구성부터 의존성 처리까지 모든 일을 처리
  • Spring Context
    • JNDI, EJB, Validation, Scheduiling, Internalization 등 엔터프라이즈 서비스를 포함
  • Spring AOP
    • 위와 같음
  • Spring DAO
    • Database에 접근하는 객체
    • Spring JDBC DAO는 추상 레이어를 지원 -> 코딩 또는 예외처리하는 부분을 간편화하여 일관된 방법으로 코드를 짤 수 있도록 도와줌
  • Spring ORM
    • ORM : Object - Relational Mapping
      • 객체와 관계형 DB를 매핑(패러다임의 일치)
    • Ibatis, Hibernate, JDO 등 보편화된 ORM 도구를 사용할 수 있도록 함
    • JPA 추천
      • JPA : Java Persistence API
      • 자바 진영의 ORM
      • 스프링 데이터 JPA
  • Spring Web
    • 애플리케이션 모듈에 내장되어 있으며 WEB 기반의 응용프로그램에 대한 Context 제공
    • 일반적으로 Web App. 개발에 필요한 기본 기능을 지원
  • Spring MVC
    • 아래와 같음
    • JSP, Velocity, Tiles 등 수많은 View 기능 지원


🥨Spring MVC (Model 2)

  • Model View Controller
    • MVC : 사용자 인터페이스비지니스 로직을 분리하여 개발
    • Model1, Model2로 나뉘어 있다.
  • Model?
    • 데이터 처리
    • Service + DAO(Data Access Object)
      • Service 영역은 불필요한 HTTP 통신을 하지 않으며, request or response와 같은 객체를 매개변수로 받으면 안된다.
      • View에 종속적인 코드가 없어야 한다. (=View가 변경되어도 Service는 재사용이 가능하도록 개발해야 한다.)
    • Model 단은 ViewController 단의 어떠한 정보도 가지고 있으면 안된다.
  • View?
    • 사용자 인터페이스 (=사용자에게 보여지는 부분)
    • Controller를 통해 Model 내 데이터에 대한 시각화
    • Model이 가진 정보를 저장하면 안되며, Model, Controller의 구성 요소를 알아서는 안된다.
  • Controller?
    • View에게 받은 요청을 가공(정제)하여 Model(Service 단)에게 전달
    • Model로 부터 받은 결과를 View로 전송
    • Controller는 모든 요청 및 모델 에러를 처리하고, ViewModel에 대한 정보를 알고 있어야 한다.
  • 소스를 분리하여 목적을 명확하게 함으로 유지보수성을 높일 수 있다.


🚓동작 과정

profile
열심히 해보자9999

0개의 댓글