blah blah

InfoQ – Spring 3.0

사내 FW 관련 회의 때문에 구글 번역 참고해서 대충 …

원문 InfoQ – Spring 3.0: Java 5 Required, Adds New Expression Language and REST Support

SpringFramewok 의 새 버전인 3.0이 2009년 12월 16일 출시되었다. InfoQ 는 SpringFramework 프로젝트의 기술 리더인 유겐 휄러 Juergen Hoeller 와 이번 출시, 그리고 Spring 제품군에 어떤 변화가 있을지 좀 더 알아보기위해 이야기를 나누어보았다.

휄러는 Spring 3.0에서 선보인 주요 새 기능에 대하여 다음과 같이 설명했다

  • Java 5 필요 – core API는 generics 나 annotation 과 같은 Java 5의 기능 사용하도록 업데이트 되었으며 그 결과 Spring 3.0에서는 Java 5 이상 버전이 필요하다.
  • SpringExpressionLanguage (SpEL) – JSF의 UnifiedEL 과 비슷한 RichExpression 구현이 아주 단순화되었다.
  • 어노테이션 기반 컴포넌트 지원 확장 – @Configuration, @Bean, @DependsOn 같은 SpringJavaConfig 의 몇 가지 기능이 core framework에 도입되었다.
  • 제약 어노테이션을 이용한 선언적 모델 검증 – JSR 303을 지원함에 따라, NotNull이나 @Max(23)와 같은 어노테이션을 이용한 검증규칙을 bean에 추가할 수 있게 되었다.
  • SpringMVC 에 대한 포괄적 REST 지원 – RESTful 서버와 클라이언트 구축 지원.
  • Java EE 6 지원 – JPA2.0, JSF2.0 같은 Java EE 6의 많은 기능을 지원할 뿐더러 이 기능들이 Java EE 6 지원하지 않는 Tomcat이나 J2EE 1.4 애플리케이션 서버 등의 컨테이너에서도 작동한다.
  • JSR 330 지원 – JSR 330에서 도입된 javax.inject annotation을 지원하게 되었다.
  • annotation 기반 포맷 – DateTimeFormat(iso=ISO.DATE)이나 NumberFormat(style=Style.CURRENCY)과 같은 어노테이션 이용한 bean 필드는 자동 포맷 변환된다.

전체 변경 내역참고 문서가 현재 이용 가능하다.

휄러는 SpEL에 대하여 조금 더 자세히 언급했다

SpEL은 UnifiedEL 의 구문적 특성을 따르는 RichExpressionLanguage 로 JSF 의 표현 방식과 상당히 유사하다. 특별한 기능을 가진 독자적인 expression 파서를 갖게됨에 따라, bean 정의에 이용할 수 있을 뿐만 아니라, SpringIntegration 과 같은 프로젝트에도 이용 가능해졌다. Spring core에서 “#{…}” 표현식은 XML bean 정의나 @Value 어노테이션 등과 같은 많은 곳에서 사용될 수 있으며, 간결한 방식으로 동적으로 이름을 이용하여 다른 bean을 참조하거나, 해당 프로퍼티의 참조를 해제할 수 있다.

예를 들면, 다음의 XML 블록은 SpEL을 사용하여 JVM의 시스템 프로퍼티를 읽어 들여서 SpringBean의 프로퍼티로 설정하는 것을 보여준다.

<bean class="mycompany.RewardsTestDatabase">
    <property name="databaseName"
        value="#{systemProperties.databaseName}" />
    <property name="keyGenerator"
        value="#{strategyBean.databaseKeyGenerator}" />
</bean>

또한 새로운 REST 지원 기능에 대해서 잠깐 설명하였다.

SpringMVC 에서 Rest 를 지원토록 하려는 것은 MVC 사용자들의 손에 강력하고 새로운 기능을 쥐어주기 위한 도전이었다. 기본 MVC 에서 PathVariableExtraction, ContentNegotiation 등을 지원할 수 있는 옳바른 방식을 채택했는데 Spring MVC의 강점을 고려해서 기본 아키텍처 손상 없이 그 기능을 포함시켜 다음 단계로 진행하는 거였다. 이 작업은 잘 진행되어 이미 작성된 SpringMVC 애플리케이션에 REST 기능을 적용하는 것도 수월하게 처리되었다. 우리의 주관심사는 REST 규약을 준수하는 웹 UI였다. 그다음은 SpringMVC 기본 기능 위에서 REST 기반 웹서비스에 대한 관심 증대에 대응하는 것으로 특히 Spring 코어의 일부가 된 OXM (ObjectXMLMapping) 모듈의 조합에 관심이 높아졌다. 마지막으로 REST 지향 서버와 프로그래밍 방식으로 상호 작용 할 수 있도록 클라이언트 측에 Spring 스타일의 RestTemplate 클래스의 형태를 제공하는 것이었다.

Spring 2.5를 사용하고 있거나, 그 버전에서 채택된 어노테이션 기반 스타일을 따르도록 코드를 업데이트하고 있는 사용자에게도 업그레이드는 무난할 것이다 – 새로운 기능은 3.0으로 업그레이드 후에 취사선택할 수 있고 근본적인 아키텍처 상의 변화는 필요없다. 폼 컨트롤러 클래스 계층 구조같은 낡은 기능 사용자에 대해서도 3.0에서는 여전히 지원하지만 언젠가 폐기(deprecated)될 것이다. 새로운 3.0 기능을 사용하려면 어노테이션 기반의 @MVC 스타일로의 이행이 필요하다. Spring 2.0 사용자를 위해서도 코드의 99%는 지속적으로 작동되도록 할 것이다. 하지만 Apache Commons Attributes, WebLogic 8.1, WebSphere 5.1 를 지원하는 낡은 컴포넌트들은 제거되었다.

SpringFramework의 향후 계획에 대해, 휄러는 개발 작업이 SpringIntegration, SpringWebFlow, SpringSourceDmServer, SpringRoo 등과 같은 Spring 의 여타 프로젝트에서 지속적으로 영향을 받을 것이라고 했다. 3.1판의 기능들은 SpringIntegration 2.0과 SpringWebFlow 3.0 의 강한 영향을 받을 것이며, first-class conversation 관리, scope 확장 지원, 어노테이션 기반 컴포넌트 모델 정제 등이 계획되어있다. 2010년 중순에 3.1 출시가 계획되어있으며, 그 후 3.2 출시가 이어질거지만 3.2에 대한 구체적 계획은 아직 결정된 바 없다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s