Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

스프링 프레임워크 3.0의 새로운 기능 및 향상된 기능

Info
title참고
Tip
titleJava SE와 Java EE 지원

스프링 프레임워크는 Java 5 기반이고, Java 6를 완전하게 지원함.

스프링은 J2EE 1.4와 Java EE 5와 호환되며, Java EE 6를 일찍부터 지원함.

...

  • 제너릭(generic)이나 가변인자(varargs), 그 외 언어적 개선사항 같은 Java 5 기능의 이점을 취하도록 전체 프레임워크 코드를 수정함.
  • 제너릭 컬렉션과 맵의 일관된 사용, 제너릭 팩토리빈(FactoryBean)의 일관된 사용, 스프링 AOP API에서 브릿지 메서드의 일관된 해결책을 제공함.
  • 제너릭 애플리케이션리스너(Generic ApplicationListener)는 자동으로 특정이벤트의 타입만 받음.
  • TransactionCallback과 HibernateCallback같은 모든 콜백 인터페이스는 이제 제너릭 결과값을 선언함.
  • 전반적으로 스프링 핵심코드를 Java 5를 기반으로 새로 작성되고 최적화함.
  • Java 5의 java.util.concurrent와의 닫힌 통합(close integration)을 위해 스프링의 TaskExecutor 추상화를 수정함.
  • ExecutorService 어댑터, ThreadFactory 통합 뿐 아니라 이제 Callable과 Future를 지원하는 퍼스트 클래스(first-class)를 제공함.
  • 가능한 한 JSR-236(Java EE 6을 위한 동시성 유틸리티)과 맞춤.
  • 새로운 @Async 애노테이션(또는 EJB 3.1의 @Asynchronous 애노테이션)으로 비동기 메서드 호출을 지원함.

2. 새로운 모듈 구조와 빌드 시스템

Anchor
2.1
2.1
2.1. 새로운 모듈 구조

프레임워크 모듈을 수정하여, 모듈 jar별로 하나의 소스트리로 분리해서 관리함.

...

Gister macro
gistUrlhttps://gist.github.com/ChoiYoungMok/9525b1c7b4cb9184868c43951edbc7ae

Anchor
3.3
3.3
3.3. 제어의 역전(IoC) 컨테이너

자바 기반 빈 메타데이터

JavaConfig 프로젝트로부터 일부 핵심기능이 스프링 프레임워크에 추가됨. 아래 애노테이션을 직접 지원함.

...

  • @Bean 애노테이션을 사용하는 메서드는 스프링 컴포넌트 안에서도 사용할 수 있음.
  • 이 메서드들은 컨테이너에 팩토리 빈을 정의하는 데 기여함.

3.4. 범용적인 타입 컨버전(형

...

변환) 시스템 및 필드 포맷 시스템

  • 범용적인 타입 컨버전(형 변환) 시스템을 도입함.
    • 타입 컨버전을 위해 SpEL로 타입 컨버전 시스템을 사용함.
    • 빈 프로퍼티 값에 바인딩을 할 때 스프링 컨테이너와 DataBinder로 타입 컨버전 시스템을 사용할 수 있음.
  • 필드값을 포맷팅하기 위해 포맷터 SPI를 도입함.
    • 포맷터 SPI는 스프링 MVC와 같은 클라이언트 환경에서 사용하기 위해 JavaBean PropertyEditor를 더욱 간단하고 강력한 대안을 통해 제공함.

3.5. 데이터 계층

  • 스프링 웹 서비스 프로젝트의 객체와 XML을 매핑하는 기능(OXM)은 스프링 프레임워크의 코어로 이동함.
  • 이 기능은 org.springframework.oxm 패키지에서 찾을 수 있음.

3.6. 웹 계층

  • RESTful 웹 서비스와 웹 애플리케이션 구축 지원
  • 웹 애플리케이션에서 사용할 수 있는 새로운 애노테이션 추가

포괄적인 REST 지원

  • 기존의 MVC 웹 애플리케이션 애노테이션을 확장하여 RESTful 애플리케이션 구축을 위한 서버 사이드 지원을 함.
  • JdbcTemplate이나 JmsTemplate과 같은 템플릿 클래스처럼 RestTemplate 클래스를 통해 클라이언트 사이드 지원을 함.
  • MarshallingHttpMessageConverter는 앞에서 이야기 하였던 객체와 XML을 매핑하는 기능(OXM)을 사용함.

@MVC 추가

  • 스프링 MVC 설정을 크게 간소화할 수 있는 mvc 네임스페이스를 도입함.
  • @CookieValue와 @RequestHeaders와 같은 애노테이션을 추가함.

3.7. 선언적인 모델 검증

  • JSR 303 지원을 포함한 여러 유효성 검증을 강화함.
  • 기본 프로바이더로 Hibernate Validator 사용함.

3.8. Java EE 6를 위한 조기 지원

  • 새로운 @Async 애노테이션(또는 EJB 3.1의 @Asynchronous 애노테이션)을 사용하여 비동기 메서드 호출을 지원함.
  • JSR 303, JSF 2.0, JPA 2.0 등등

3.9. 임베디드 데이터베이스 지원

  • HSQL, H2, Derby를 포함한 임베디드 자바 데이터베이스 엔진을 편리하게 지원함.