본문 바로가기

토비의 스프링 정리

토비의 스프링 - 0.1 스프링

0.1.1 스프링이란 무엇인가?

  • 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크

 💡 스프링을 사용하기 위해서는 스프링 컨테이너를 다루는 방법과 스프링 컨테이너가 애플리케이션 오브젝트를 이용할 수 있도록 하는 설정정보를 작성할 수 있어야 한다.

 

 💡 스프링의 모든 기술을 JavaEE에 기반을 두고 있다.

 

0.1.2 스프링 컨테이너

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

0.1.3 스프링의 핵심 개념 세 가지

  1. Ioc/DI(Inversion of Control/Dependency Injection)
    • 객체지향 설계 원칙과 디자인 패턴의 핵심 원리
  2. 서비스 추상화
    • 기술과 환경에 종속되지 않도록 추상 계층을 두는 방법
  3. AOP(Aspect Oriented Programming)
    • 부가기능을 독립적으로 모듈화. 깔끔한 코드 유지

💡 스프링은 방대한 API를 제공하여 “일관된” 방식으로 코드를 짤 수 있게함.

 

0.1.3 스프링의 장점

  1. 단순함(simplicity)
    • 일관된 방식으로 단순성 제공
    • Java가 복잡해지면서 잃어버린 객체지향의 특징을 살릴수 있음
  2. 유연성(flexibility)
    • 많은 서드파티 프레임워크의 지원을 받아 유연함
     💡 여러 서드파티 프레임워크와 함께 사용할 수 있기 때문에 접착(glue) 프레임워크라 불림

0.1.4 스프링 개발 철학

  • 항상 프레임워크 기반의 접근 방법을 사용하라

0.1.5 스프링을 공부할 때 지켜야 하는 방법

  1. 스프링을 일관된 방식으로 이해할 수 있어야 함
  2. 스프링은 폭넓은 접근 방법을 제공하므로, 남들이 만들어 놓은 예제를 가져다 사용하지 말고 직접 어떤 스타일 및 서드파티를 사용할 것인지 고민해야 함
  3. 실제 애플리케이션 개발에 어떤 식으로 적용해야 하는지 공부해야 함

💡 스프링은 특정 아키텍처에 제한되지 않는다. 특정 기업은 스프링을 기반으로 제작물에 맞는 프레임워크를 개발하여 사용하고 있음.

 

0.1.6 스프링 3.0의 달라진 기능

  1. Java 5와 JavaEE 6
  2. 스프링 표현식 언어(SpEL)
    • 스프링 공식 표형식 언어
  3. 자바 코드를 이용한 DI 설정과 DIJ(JSR-330)
    • XML이 아닌 Java Code로 DI 설정 가능
    • @Configration, @Bean 등의 애노테이션을 부여하여 DI 설정정보로 이용할 수 있음
    • @Inject와 Provider 같은 자바 표준 DI 애노테이션을 이용한 DI 설정 지원
  4. OXM
    • 오브젝트와 XML 문서의 상호변환 지원하는 자바 기술에 대한 서비스 추상화 모듈
  5. @MVC와 REST
    • 웹 프레젠테이션 계층을 편리하게 개발 지원
  6. 내장형 DB 지원
    • Derby, HSQL, H2에 대한 내장형 DB 지원기능 추가
  7. Converter, ConversionService, Formatter
    • 기존에 사용되던 PropertyEditor를 대신할 수 있는 Converter와 ConversionService 타입 변환 API 추가
    • 웹 환경에 특화된 Formatter 제공

0.1.7 스프링 3.1에 추가된 새로운 기능

  1. 강화된 자바 코드를 이용한 빈 설정
    • 기존에 XML로 작성했던 스프링 설정 정보를 3.1에서는 자바 코드로 대체 가능
  2. 런타임 환경 추상화
    • 빈 설정을 효과적으로 관리 가능
  3. JPA 지원 확장과 하이터네이트 4 지원
  4. 새로운 DispatcherServlet 전략과 플래시 맵
    • DispatcherServlet 전략의 일부가 새롭게 설계된 전략으로 대체
    • Post/Redirect/Get 패턴에 사용할 수 있는 플래시 맵 기능 추가
  5. 캐시 추상화
    • AOP를 이용한 메소드 레벨의 캐시 추상화 기능 추가