스프링 프레임워크 3.0의 새로운 기능 및 향상된 기능
Info | ||
---|---|---|
| ||
Tip | ||
---|---|---|
| ||
스프링 프레임워크는 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 | ||||
---|---|---|---|---|
|
프레임워크 모듈을 수정하여, 모듈 jar별로 하나의 소스트리로 분리해서 관리함.
...
- 스프링의 표현 언어는 일반적인 EL과 문법적으로는 유사하지만 훨씬 더 많은 기능을 제공함.
- 표현언어는 XML 및 애노테이션 기반의 빈 정의에 사용할 수 있음.
- 스프링 포트폴리오에서 표현 언어를 지원하기 위한 토대가 됨.
- 스프링 표현 언어는 스프링 포트폴리오의 모든 제품에서 잘 지원하는 하나의 표현언어를 스프링 커뮤니티에 제공할 목적으로 만들어 짐.
- 스프링 포트폴리오에 있는 프로젝트의 요구사항을 기반으로 하여 기능이 만들어 짐. (이클립스 기반의 STS 내에서의 코드 자동완성 기능도 포함됨)
아래는 데이터베이스 설정의 프로퍼티 설정에 대한 예시임.
Gister macro | ||
---|---|---|
|
Gister macro | ||
---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
자바 기반 빈 메타데이터
JavaConfig 프로젝트로부터 일부 핵심기능이 스프링 프레임워크에 추가됨. 아래 애노테이션을 직접 지원함.
@Configuration
@Bean
@DependsOn
@Primary
@Lazy
@Import
@ImportResource
@Value
아래는 새로운 JavaConfig 기능을 사용해서 기본적인 설정을 제공하는 자바 클래스의 예제임.
Gister macro | ||
---|---|---|
|
이 설정이 동작하게 하려면 애플리케이션 컨텍스트 XML 파일에 컴포넌트 스캔을 추가해야 함.
Gister macro | ||
---|---|---|
|
또는 AnnotationConfigApplicationContext를 직접 사용하는 @Configuration 클래스를 사용할 수 있음.
Gister macro | ||
---|---|---|
|
컴포넌트안에서 빈 메타데이터 정의
- @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를 포함한 임베디드 자바 데이터베이스 엔진을 편리하게 지원함.