Spring Framework/토비의 스프링

머릿말

계란💕 2023. 3. 18. 19:38

Spring이란 무엇인가?

  • Java Enterprise application 개발에 사용되는 프레임워크를 말한다. 
  • 애플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델, API를 제공한다.
    • 애플리케이션의 바탕이 되는 틀(Spring Container): 스프링 컨테이너 또는 ApplicationContext 라고 불리는 스프링 런타임 엔진을 제공한다. 
      • 독립적 동작할 수도 있고 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용한다.
    • 공통 프로그래밍 모델: IoC/DI, 서비스 추상화, AOP
      • 1) 스프링은 유연하고 확장성있는 코드를 만들 수 있도록 도와주는 객체지향 설계 원칙, 디자인 패턴의 핵심원리를 담고 있는 IoC, DI를 근간으로 한다.
      • IoC, DI 방식을 따라 작성해서 스프링이 제공하는 가치를 제대로 누릴 수 있다.
      • 효율적으로 사용하는데 기본이 되고 가장 중요한 기술이다. 
      • 2) 서비스 추상화: 환경이나 서버, 특정 기술에 종속적이지 않고 유연한 애플리케이션을 만들 수 있다. 유연한 추상 계층을 두는 방법이다. 
      • 3) AOP(관점 지향 프로그래밍): 애플리케이션 코드에 흩어져 있는 부가적 기능을 독립적으로 모듈화하는 프로그래밍 모델이다.  AOP를 이용해서 다양한 서비스를 적용하도고 깔끔한 코드를 유지한다. 
    • 기술 API: 다양한 계층(UI 작성, 웹 프레젠테이션 계층, 비즈니스 서비스 계층, 기반 서비스 계층, 도메인 계층, 데이터 엑세스 계층) 등에서 필요한 주요 기술을 스프링에서 일관된 방식으로 사용할 수 있도록 지원해주는 기능, 전략 클래스 등을 제공한다. Java EE에 기반을 둔다. 
    • 스프링 사용은 위 세 가지 요소를 적극적으로 활용해서 애플리케이션을 개발을 의미

Spring 성공 요인

  • 스프링은 사실상의 사바 엔터프라이즈 표준 기술로 
  • 단순하다
  • 유연성

Spring 3.1에 추가된 기능

  • 강화된 자바 코드를 이용한 빈 설정: 기존에 XML로 작성했던 설정 정보를 3.1 부터는 자바 코드로 대체 가능하다. 
    • XML의 전용 커스텀 태그를 대체할 수 있는 @Enable로 시작하는 전용 애너테이션이 제공된다. 
  • 런타임 환경 추상화: 애플리케이션이 실행되는 동안 런타임 환경 정보를 추상화한 환경 오브젝트(프로파일, 각종 프로퍼티 정보를 컨테이너를 통해 일관적으로 제공하는 프로퍼티 소스)가 컨테이너를 통해 제공됨
  • JPA 지원 확장과 하이버네이트 4 지원
  • 새로운 DispatchServlet 전략과 플래시 맵
  • 캐시 추상화: AOP를 이용한 메소드 레벨의 캐시 추상화 기능이 추가됨 

 


모르는 부분

  • Java EE(Enterprise Edition, 자바 엔터프라이즈 플랫폼)
    • Java EE는 Java SE 위에서 구축된다. 애플리케이션을 개발하고 실행하기 위한 API, 런타임 환경을 제공한다. Servlet, Json, Rest 반응형 클라이언트 API, 웹 소켓을 지원하기 때문이다.  
    • 웹 개발을 하기 위해 Java EE 로 개발한다. 
  • Java SE(Standard Edition): 가장 기본인 표준 에디션인 자바 플랫폼이다. 
    • JDK(Java SE Developmet Kit)를 설치 받아서 JavaSE를 사용 가능하다. 
    • Java 언어 플랫폼 중 하나이다. 
  • 플래시맵(FlashMap): 스프링에서 파라미터를 간편하게 전달하기 위한 자료구조이다. 
    • 같은 도메인에서 Controller 간, 혹은 웹 페이지에서 발생하는 Redirect 시에 데이터 처리를 간단하게 하기 위한 목적으로 사용된다. 
    • 특징
      • Map 자료 구조처럼 쉽고 간단하게 사용 가능하고 사용 뒤에는 Spring에서 값을 자동으로 지움
      • 휘발성이 있다.
      • 개발자 입장에서는 관리에 부담없이 가볍게 attribute를 다룰 수 있다. 

 

 

참고

https://jins-dev.tistory.com/entry/Spring-%EC%9D%98-FlashMap

https://kbj96.tistory.com/38

 

출처 - 「토비의 스프링 Vol 1 - 이일민」