토비의 스프링 3.1

JJStone·2022년 10월 24일

토비의 스프링 3.1

목록 보기
1/2

토비의 스프링 3.1

1. 스프링이란 무엇인가?

1-1. 스프링이란?

  • 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크.
  • 애플리케이션 프레임워크는 애플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델, 기술 API 등을 제공. 스프링을 사용한다는 것은 이 세가지 요소를 적극적으로 활용하여 애플리케이션을 개발한다는 뜻.

1-2. 스프링 컨테이너

  • 스프링은 스프링 컨테이너 또는 애플리케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공
  • 스프링 컨테이너는 설정 정보를 참고로해 어플리케이션을 구성하는 오브젝트를 생성 및 관리한다.
  • 독립적으로 동작할 수 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용

1-3. 공통 프로그래밍 모델 - IoC/DI, 서비스 추상화, AOP(Aspect Oriented Programming)

  • Spring은 3가지 핵심 프로그래밍 모델을 지원
    • IoC/DI, 서비스 추상화, AOP(관점 지향 프로그래밍)
  • 프로그래밍 모델
    • 어플리케이션을 구성하는 오브젝트가 생성되고 동작하는 방식에 대한 틀 제공
    • 어플리케이션 코드가 어떻게 작성되어야 하는지에 대한 기준
  • IoC/DI
    • 오브젝트의 생명주기와 의존관계에 대한 프로그래밍 모델.
    • 스프링에서 동작하는 코드는 IoC/DI 방식을 따라 작성되어야 스프링이 제공하는 가치를 제대로 누릴 수 있다.
  • 서비스 추상화
    • 스프링을 사용하면 환경이나 서버, 특정 기술에 종속되지 않고 이식성이 뛰어나며 유연한 어플리케이션을 만들 수 있는데 이것이 바로 서비스 추상화이다.
    • 구체적인 기술과 환경에 종속되지 않도록 유연한 추상 계층을 두는 방법
  • AOP(Aspect Oriented Programming)
    • 애플리케이션 코드에 산재해서 나타나는 부가적은 기능을 독립적으로 모듈화하는 프로그래밍 모델.
    • 스프링은 AOP를 이용해 다양한 엔터프라이즈 서비스를 적용하고 깔끔한 코드를 유지할 수 있게 해준다.

1-4. 기술 API

  • 스프링은 애플리케이션 개발의 다양한 영역에 바로 활용할 수 있는 방대한 양의 기술 API를 제공.
  • UI 작성, 웹 프리젠테이션 계층, 비즈니스 서비스 계층, 기반 서비스 계층, 도메인 계층, 데이터 엑세스 계층 등에서 필요한 주요 기술을 스프링에서 일관된 방식으로 사용할 수 있도록 지원해주는 기능과 전략 클래스 등을 제공.
  • 스프링이 제공하는 API와 지원 기술은 모두 스프링의 프로그래밍 모델에 따라 작성되어 있기 때문에 이를 가져다 쓰는것만으로도 스프링의 프로그래밍 모델을 자연스럽게 적용 가능.

2. 스프링의 성공요인

  • 견고하고 건전한 자바와 엔터프라이즈 개발의 핵심 가치에 충실.
  • 이를 통해 이상적인 개발 철학과 프로그래밍 모델을 이해하게 되고 좋은 개발 습관을 체득하게 된다.
  • 개발자가 스프링을 통해 얻게 되는 두 가지 중요한 가치가 있는데 그것이 단순함과 유연성이다.

2-1. 단순함 (simplicity)

  • 스프링이 지향하는것은 목적을 이룰 수 있는 가장 단순하고 명쾌한 접근 방법
  • Spring은 Java의 객체 지향언어에서 영향을 많이 받았는데, 시간이 지나고 자바의 기술이 복잡해지면서 자바의 본질인 객체 지향 언어라는 특징을 점점 잃어버림.
  • Spring은 잃어버린 객체 지향 언어의 장점을 다시 살릴 수 있도록 POJO 프로그래밍 방식을 강력히 주장하고 이를 사용하고 있음.

2-2. 유연성(flexibility)

  • 스프링은 유연성과 확장성이 매우 뛰어남.
  • 다른 많은 프레임워크와 편리하게 접목되어 사용할 수 있음.
  • 많은 양의 서드파티 프레임워크의 지원을 받는다.
profile
java, scala 개발자 입니다.

0개의 댓글