Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

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

Java SE와 Java EE 지원

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

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

1. Java 5

  • 제너릭(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. 새로운 모듈 구조와 빌드 시스템

2.1. 새로운 모듈 구조

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

  • org.springframework.aop

  • org.springframework.beans

  • org.springframework.context

  • org.springframework.context.support

  • org.springframework.expression

  • org.springframework.instrument

  • org.springframework.jdbc

  • org.springframework.jms

  • org.springframework.orm

  • org.springframework.oxm

  • org.springframework.test

  • org.springframework.transaction

  • org.springframework.web

  • org.springframework.web.portlet

  • org.springframework.web.servlet

  • org.springframework.web.struts

2.2. 새로운 빌드 시스템

ex) 스프링 웹 플로우(Web Flow) 2.0

  • Ivy 기반의 스프링 빌드 시스템
  • 일관된 배포 과정
  • 일관된 의존성 관리
  • 일관된 OSGi manifest 생성

참고

전체 프레임워크를 대부분 포함하고 있는 spring.jar artifact는 더 이상 제공하지 않음.

3. 새로운 기능

3.1. Java 5를 위한 코어 API 업데이트

BeanFactory 인터페이스는 가능한한 타입이 있는 빈을 리턴함.

  • T getBean(Class<T> requiredType)

  • T getBean(String name, Class<T> requiredType)

  • Map<String, T> getBeansOfType(Class<T> type)

스프링의 TaskExecutor 인터페이스는 java.util.concurrent.Executor를 상속받음.

  • 상속받은 AsyncTaskExecutor는 표준 Callable와 Future를 지원한다.

Java 5 기반의 새로운 변환 API와 SPI

  • 무상태 ConversionService와 Converters
  • 표준 JDK PropertyEditors 대체함.

타입이 있는 ApplicationListener<E>

3.2. 스프링 표현 언어(SpEL)

  • 스프링의 표현 언어는 일반적인 EL과 문법적으로는 유사하지만 훨씬 더 많은 기능을 제공함. 
  • 표현언어는 XML 및 애노테이션 기반의 빈 정의에 사용할 수 있음.
  • 스프링 포트폴리오에서 표현 언어를 지원하기 위한 토대가 됨.
  • 스프링 표현 언어는 스프링 포트폴리오의 모든 제품에서 잘 지원하는 하나의 표현언어를 스프링 커뮤니티에 제공할 목적으로 만들어 짐.
  • 스프링 포트폴리오에 있는 프로젝트의 요구사항을 기반으로 하여 기능이 만들어 짐. (이클립스 기반의 STS 내에서의 코드 자동완성 기능도 포함됨)

아래는 데이터베이스 설정의 프로퍼티 설정에 대한 예시임.

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

자바 기반 빈 메타데이터

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

  • @Configuration

  • @Bean

  • @DependsOn

  • @Primary

  • @Lazy

  • @Import

  • @ImportResource

  • @Value

아래는 새로운 JavaConfig 기능을 사용해서 기본적인 설정을 제공하는 자바 클래스의 예제임.

이 설정이 동작하게 하려면 애플리케이션 컨텍스트 XML 파일에 컴포넌트 스캔을 추가해야 함.

또는 AnnotationConfigApplicationContext를 직접 사용하는 @Configuration 클래스를 사용할 수 있음.

컴포넌트안에서 빈 메타데이터 정의

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

3.4. 범용적인 타입 컨버전(형 변환) 시스템 및 필드 포맷 시스템

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

3.5. 데이터 계층

3.6. 웹 계층

포괄적인 REST 지원

@MVC 추가

3.7. 선언적인 모델 검증

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

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

 

 

  • No labels