[CS] Spring

Myung A Lee·2023년 7월 8일
0

CS

목록 보기
8/11

Spring

Spring Framework

  • 자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크
  • 스프링 컨테이너로 자바 객체를 관리하면서 DI와 IoC를 통해 결합도를 낮춘다.

Spring Boot

  • 스프링 부트는 Spring을 보다 편리하게 사용할 수 있도록 하기 위한 도구 기존의 많은 설정이 자동화 (spring boot starter dependency)
  • 내장 TOMCAT을 사용할 수 있다. 하지만 많은 용량을 처리할 수 없으므로 테스트 용도가 아니라면 꼭 서버를 설치해야만 한다.

Spring Container

애플리케이션이 실행되면 비어있는 스프링 컨테이너가 생성되고 스프링 설정 파일이나 어노테이션 기반으로 컨테이너에 스프링 빈이 등록되고 의존관계가 주입

IOC (Innversion of Control 제어역행)

  • 애플리케이션 간의 느슨한 결합을 제어
  • 제어권이 개발자에게 있지 않고, 프레임워크에 있어서 필요에 따라서 사용자의 코드를 호출
  • 스프링에서는 인스턴스의 생성부터 소멸까지 개발자가 아닌 컨테이너에서 대신 관리

DI (Dependency Injection 의존성 주입)

  • 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행하는 방법
  • 객체간의 의존관계를 미리 설정해두면 스프링 컨테이너가 의존관계를 자동으로 연결해 주며 직접 의존하는 객체를 생성하는 일이 없기 때문에 결합도가 낮아진다.
  • 의존성 주입은 생성자 주입, 필드 주입, Setter 주입의 3가지 방법이 있는데 Spring에서 가장 권장하는 의존성 주입 방법은 생성자를 통한 주입 방법으로 순환 참조를 방지하고, 불변성을 가지며 테스트에 용이하기 때문이다.

AOP (Asper-Oriented Programming 관점지향 프로그래밍) 기능을 이용해 자원 관리

  • 핵심 기능 외 부수 기능들을 분리 구현하므로써 모듈성을 증가시키는 방법
  • 메서드 안의 주기능과 보조 기능을 분리한 후 선택적으로 메서드에 적용해서 사용
  • 트랜잭션이나 로깅, 보안과 같이 공통적으로 사용하는 기능들을 분리하여 관리

POJO (Plain Old Java Object) 방식 프레임워크

  • 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 활용될 수 있는 방식으로 설계된 오브젝트로 스프링에 IOC, DI, AOP는 POJO 프로그래밍을 손쉽게 할 수 있도록 지원하는 기술
  • 스프링에서 생성되어 관리되는 POJO 기반의 객체를 Spring Bean이라고 한다.
  • 단순 getter, setter만으로 구성되어 있으며 new를 통해서 생성 가능한 형태

Servlet

  • 자바를 사용해 웹을 만들기 위해 필요한 기술로 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술
  • Spring MVC에서 Controller로 이용되며, 사용자의 요청을 받아 처리한 후에 결과를 반환

Spring MVC

  • MVC는 Model, View, Controller의 약자이며, 각 계층간의 기능을 구분하는데 중점을 둔 디자인 패턴
  • MVC패턴을 사용하는 이유는 비즈니스 로직과 UI 로직을 분리하여 유지보수를 독립적으로 수행하기 위함
  • Model : 데이터 관리 및 비즈니스 로직을 처리하는 부분 (DAO, DTO, Service)
  • View : 비즈니스 로직의 처리 결과를 유저 인터페이스에 반환
  • Controller : 사용자의 요청을 처리하고 Model과 View를 중개하는 역할

Annotation

  • Java 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종으로 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역활
  • Annotation의 사용은 코드의 생산성을 증가시키고 코드량을 감소시키며 유지보수에 용이
  • @RequestBody, @RequestParam, @ModelAttribute, @Bean, @Component ...

Bean

  • Spring IoC 컨테이너가 관리하는 자바 객체로 컨테이너가 생성한 객체.

Entity, VO, BO, DAO, DTO 차이

  • Entity
    실제 데이터베이스의 테이블과 1:1로 매핑되는 클래스로 DB의 테이블내에 존재하는 컬럼만을 속성으로 가져야한다
  • DAO(Data Access Object)
    DB 데이터에 접근하여 조작하거나 조회하기 위한 객체. (Repository, Mapper)
  • BO(Business Object)
    여러 DAO를 활용해 비즈니스 로직을 처리하는 객체 (Service)
  • DTO(Data Transfer Object)
    각 계층간의 데이터 교환을 위한 데이터 객체로 접근하기 위한 Getter/Setter 메소드를 가진 클래스
  • VO(Value Object)
    실제 데이터(read Only)만을 저장하는 객체로 특정한 비즈니스 값을 담는 객체

0개의 댓글