콘텐츠로 이동

2021 04 15(2)

2021-04-15

그래서 Spring이 뭔데?

  • 정의 - 자바 웹 프레임워크로 동적인 웹 사이트 개발에 사용 - 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화 된 솔루션 - Spring Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리 - 객체의 생성/소멸/라이프사이클 관리 - Spring 컨테이너로 부터 필요한 객체를 가져와 사용 가능
  • 특징 - 경량 컨테이너로서 자바 객체를 직접 관리 - 객체의 생성/소멸 라이프 사이클을 관리하며, 스프링으로부터 필요한 객체 얻어올 수 있음 - POJO 방식의 프레임워크 - IoC를 지원 - 컨트롤의 제어권이 사용자가 아니라, 스프링 프레임워크에게 있음 - 필요에 따라 스프링에서 사용자 코드를 호출 - DI를 지원 - 각각의 계층이나 서비스 간의 의존성이 존재한다면 프레임워크가 서로 연결해줌 - AOP를 지원 - 트랜잭션, 로깅, 보안을 분리하여 관리할 수 있음
  • IoC - Inversion of Control의 약자 - 제어의 역전 - 지금까지는 사용자가 흐름을 제어 - 객체 생성 -> 의존성 객체 생성 -> 객체 내의 메서드 호출 작업 - IoC는 자신의 모든 권한을 위임 - 위임한 특별한 객체에 모든 것을 맡김 - 자신이 어디서 만들어지고, 어떻게 사용되는지 몰라 - IoC: 기존의 사용자가 모든 작업을 제어하던 것을 특별한 객체에 모든 것을 위임하여, 객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어간 것!
  • IoC의 구성 요소 DI, DL - DL - 의존성 검색 - 별도의 저장소에 Bean을 저장 - API 사용할 때 빈을 검색하는 방법 - DI - 의존성 주입 - 객체가 서로 의존하는 관계가 되도록 의존성을 주입하는 것 - 객체가 다른 객체를 사용하고 있음을 나타냄 - 각 클래스 사이에 "필요로 하는 의존 관계를 빈 설정 정보를 바탕으로 컨테이너가 자동 연결"
  • MVC - 인터페이스와 비즈니스 로직을 분리하여 개발 - Model - 데이터 처리 담당 - Service, DAO로 나뉨 - Service는 HTTP 통신 X, request/response 객체를 매개변수로 받지 않을 것 - View - 사용자 UI 담당 - View는 자신이 요청을 보낼 Controller의 정보만 알고 있을 것 - Model의 정보 저장 X, Model,Controller의 구성요소 몰라야해 - Controller - View에서 받은 요청 가공하여 Model(Service)에 전달 - Model에서 받은 결과를 가공하여 View로 전달 - Request Error, Model Error 처리
  • 스프링 구조 - Spring Core - Spring Container - Bean Factory Container - IoC 패턴을 통해 객체 구성, 의존성 처리까지 모든 역할 수행 - Spring DAO - Database에 접근 - Spring JDBC - 예외 처리 간편화 - Spring MVC - 위에서 언급한 MVC 구조를 만들어줌
  • 스프링이란?
    - 스프링 부트 - 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 - 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 - Tomcat 같은 웹 서버를 내장해 별도의 웹 서버를 설치해도 않아도 됨 - 손쉬운 빌드 구성을 위한 starter 종속성 제공 - 스프링과 외부 라이브러리 자동 구성 - 스프링 버전을 힘들게 잘 구성할 필요가 줄어듬 - 외부 라이브러리 버전을 스프링이 뚝딱 테스트해서 구성함 - 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공 - 관례에 의한 간결한 설정 - 스프링 프레임워크 - 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타 - 웹 기술: 스프링 MVC, 스프링 WebFlux - 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원 - 기술 통합: 캐시, 이메일, 원격접근, 스케줄링 - 테스트: 스프링 기반 테스트 지원 - 언어: 코틀린, 그루비
  • 왜 스프링을 만들었는가? - 자바 기반의 프레임워크 - 자바는 객체 지향 언어! - 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크! - 스프링은 "좋은 객체 지향" 애플리케이션을 개발할 수 있도록 도와주는 프레임워크!