토비의 스프링 정리 프로젝트 #0 들어가기 전에 - 스프링이란 무엇인가?

Jake Seo·2021년 6월 30일
4

토비의 스프링

목록 보기
1/29
post-custom-banner

토비의 스프링 정리 프로젝트 #0 들어가기 전에 - 스프링이란 무엇인가?

스프링이란?

  • 자바 애플리케이션 개발을 도와주는 프레임워크이다.
  • 애플리케이션의 틀, 공통 프로그래밍 모델, 기술 API 등을 제공한다.

스프링 컨테이너

  • 스프링 컨테이너 혹은 애플리케이션 컨텍스트로 불리는 스프링 런타임 엔진이다.
  • 설정 정보(configuration)를 참고하여 오브젝트를 만들고 관리한다.
  • 독립적으로 사용 가능하나, 웹 모듈에서 동작하는 서비스, 서블릿으로 등록해 사용한다.

공통 프로그래밍 모델 - IoC/DI, 서비스 추상화, AOP

  • 공통 프로그래밍 모델
    • 스프링은 공통 프로그래밍 모델을 통해 애플리케이션 코드가 어떻게 작성돼야 하는지에 대한 기준(틀)을 제공한다.
  • IoC/DI
    • IoC/DI는 스프링이 제공하는 모든 기술, API, 컨테이너의 기반이 되는 기술이다.
    • IoC/DI의 설명 링크
  • 서비스 추상화
    • 환경, 서버, 특정 기술에 종속되지 않는 이식성 뛰어난 유연한 애플리케이션을 작성하는 토대이다. 주로, 유연한 추상 계층을 둠으로써 구현된다.
    • ex) 자바의 다형성을 기반으로 구현할 수 있다.
  • AOP (Aspect Oriented Programming)
    • 애플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화하는 프로그래밍 모델이다.
    • ex) 모든 메소드에 적용되는 로깅, 소요시간 측정 등에 적용할 수 있다.

기술 API

  • 웹 프레젠테이션, 비즈니스 서비스, 기반 서비스, 도메인, 데이터 액세스 계층 등에서 필요한 주요 기술 및 전략 클래스 등을 스프링에서 일관된 방식으로 사용할수 있도록 지원한다.
  • 스프링의 모든 기술은 표준 자바 EE에 기반을 두고 있다.

종합 정리

  • IoC/DI: 스프링 컨테이너 위에 직접 작성한 클래스를 오브젝트로 올려 활용할 수 있다.
  • 공통 프로그래밍 모델: 스프링의 공통 프로그래밍 모델을 따라 스프링이 지향하는 방향으로 코드를 작성할 수 있다.
  • 기술 API 및 서비스: 엔터프라이즈 기술을 사용할 때 활용한다.

스프링의 성공 요인

  • 자바 엔터프라이즈 개발의 핵심 가치에 충실하여 베스트 프랙티스 적용에 용이
  • 이상적인 개발철학, 프로그래밍 모델은 이해에 도움이 되고 좋은 개발 습관을 만듦
  • 가장 중요한 두가지 가치인 단순함과 유연성을 강조했음

단순함

  • 기존 EJB라는 표준 기술의 복잡함을 타파함. 스프링은 가장 단순한 객체지향적인 개발 모델인 POJO 프로그래밍을 지향함

유연성

  • 항상 "프레임워크 기반의 접근 방법을 사용하는 것"이 핵심 철학임
    • 많은 서드파티 프레임워크의 지원을 받지만 코드베이스가 흔들리거나 새로 만드는 일이 없었음

스프링 학습 방법

스프링의 핵심 가치와 원리에 대한 이해

  • 핵심 가치를 이해하고, 핵심 가치를 이룰 수 있도록 도와주는 세 가지 핵심 기술을 이해하라.
  • 스프링이 강조하는 중요한 프로그래밍 모델을 이해하고, 스프링을 일관된 방식으로 이해할 수 있는 눈을 갖춰라.

스프링 기술에 대한 지식과 선택 기준 정립

  • 다양한 선택의 문제를 각 기술 영역별로 효과적으로 다루는 방법을 배워야 한다.
    • 스프링은 애플리케이션의 모든 레이어를 폭 넓게 다루며 영역별로 다양한 접근 방법을 제공한다.
    • 많은 방법 중 어떤 것을 선택할 것인지, 어떤 것을 연동할 것인지, 어떤 스타일을 사용할 것인지
    • 상황에 따른 최선의 방법을 선택할 수 있어야 한다.

스프링의 적용과 확장

  • 스프링이 제공하는 기능을 확장, 추상화할 줄 알아야 한다.
  • 스프링을 기반으로 새로운 프레임워크를 만들 수 있으면 바람직하다.
  • 때론 스프링의 자유도를 줄이고, 현장 상황에 맞는 접근방법을 정립해줄 수 있어야 한다.
  • 스프링이 지원하지 않는 기술을 스프링에 맞게 통합할 수도 있어야 한다.

스프링의 핵심

  • 기본으로 돌아가 객체지향 프로그래밍이 제공하는 폭 넓은 혜택을 누리자
  • 객체지향 기술과 설계, 구현에 관한 실용적인 전략과 검증된 베스트 프랙티스를 평범한 개발자도 자연스럽고 손쉽게 이용할 수 있게 만들자
profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.
post-custom-banner

0개의 댓글