05-16 14:15
Recent Posts
Recent Comments
관리 메뉴

miinsun

[Spring] Spring 필수 개념 정리 본문

WebApp/Spring

[Spring] Spring 필수 개념 정리

miinsun 2021. 12. 20. 17:08

1. Controller

  • 클라이언트의 요청을 받음
  • 요청에 대한 처리는 서비스에게 전달
  • 클라이언트에게 응답

2. Service

  • 비즈니스 로직을 처리
    • 비즈니스 로직은 서버에서 사용자의 요구사항을 처리하는 것을 의미함
  • DB 정보가 필요할 때는 Repository에게 전달

3. Repository

  • DB 관리 (연결, 해제, 자원 관리)
  • DB CRUD 작업 처리

요청 처리 흐름도

4. 리팩토링

리팩토링이란?
기능 상의 변경 없이 내부 구조를 개선하는 것을 의미합니다. 다른 개발자들과 코드를 공유할 때 좀 더 읽기 편하고 쉽고 빠르게 파악할 수 있어 협업을 잘할 수 있는 환경을 만들도록 해줍니다.

5. DI (의존성 주입)의 이해

하나의 클래스 생성자 변화가 다른 클래스에 영향을 주는 이유는 '강한 결합'에 있다. 이와 같은 중복 코드, 강한 결합을 해결하기 위해서는 일단 각 객체를 1번만 생성하고, 생성된 객체가 필요할 때 가져다 사용하도록 하면 된다.

이렇게 하나의 객체에서 다른 객체가 필요할 때, 객체를 직접 생성하지 않고, 이미 생성되어 있는 객체를 가져오는 작업을 'DI (Dependency Injection)' 혹은 '의존성 주입'이라고 한다.

또한, 프로그램의 제어 흐름이 뒤바뀐다고 해서 '제어의 역전(IoC: Inversion of Control)'이라고 한다. 사용자가 자신이 필요한 객체를 생성해서 사용하는 것이 일반적인데, 반대로 필요한 객체를 요청하면 어디서 어떻게 만들어졌는지 알 필요 없는 객체를 사용할 수 있게 된다. 그냥 용도에 맞게 객체를 사용할 수 있게 된다.

6. 스프링 IoC 컨테이너

DI를 사용하기 위해서는 객체 생성이 우선 되어야 한다. 이때 스프링 프레임워크가 객체 생성과 관리 역할을 대신한다.

  • 빈 (Bean): 스프링이 생성해주는 객체
  • 스프링 IoC 컨테이너: 빈을 보아둔 통

7. Annotation

스프링 IoC에 빈을 등록하고 사용하는 방법으로 어노테이션(Annotation)을 이용할 수 있다.

  • @Controller, @RestController
  • @Service
  • @Repository

모두 스프링의 빈으로 등록되지만 좀 더 특별한 역할을 맡는 빈이다.

8. 스프링 프레임워크

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.
* 출처: 스프링 공식 홈페이지

스프링 프레임 워크는 모든 종류의 배포 플랫폼에서 최신 Java 기반 엔터프라이즈 애플리케이션을 위한 포괄적인 프로그래밍 및 구성 모델을 제공한다.

  • Enterprise Applications 개발 편의성 제공
    • 기업용 애플리케이션? 고객 대상 웹 서비스 네이버, 쿠팡, 인스타그램 등
    • 적용 범위는 꾸준히 확대 중 -> IT기업에서 모든 기업들로, 기업에서 개인 사업자로
    • 스프링은 결국 기업용 애플리케이션의 요구사항 해결에 초점을 맞춘 프레임워크
  • 기업용 애플리케이션의 특성
    • 서버의 신뢰성, 안정성 유지가 중요하다
    • 막대한 양의 데이터 관리가 필요하다
    • 여러 사용자가 동시 접속 시 데이터의 일관성이 보장돼야 한다.

A Key element of Spring is infrastructural support at the application level: Spring focuses on the 'plumbing' of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment enviroments.
* 출처: 스프링 공식 홈페이지

Spring의 핵심 요소는 애플리케이션 레벨에서의 인프라 지원이다. Spring은 엔터프라이즈 애플리케이션의 '연관'에 중점을 두어 개발자가 특정 배포 환경에 대한 불필요한 연결 없이 비즈니스 로직에 집중할 수 있도록 합니다.

비즈니스 로직에 집중할 수 있도록 돕는다는 말은 서버 개발자들이 신경 써야 할 다른 부분들을 스프링이 대신 처리해 준다는 것이다. 예를 들어 웹 서버와 클라이언트 사이의 API 또는 웹 서버와 DB와의 연결을 대신 처리해 개발자들은 요구사항에만 집중해 개발을 할 수 있다.

 

Comments