Spring이 어느덧 2.0 RC2를 7월6일에 발표하였다.
개인적으로는 dev 메일링을 받아 개발진척이나 관련 프로젝트들의 진행을
꾸준히 모니터링하고 있는데, 분위기상  정식 릴리즈가 임박했음이 느껴진다.

이에 곧 나올 2.0 정식버젼에 앞서 어떤 것들이 새롭게 변모되었는지 이제는
한번쯤 봐둘 필요가 있을 듯 싶어 간단히 정리해 볼까한다.

1. IoC 컨테이너의 향상

  2.0으로 올라오며, 내부적으로 가장 많은 변화가 있었던 부분이 IoC 컨테이너
  부분이다. (단, 사용자 관점에서는 큰 변화를 느끼지 못하겠지만)
  간단히 간추려 보면,

  1.1. XML 설정파일이 쉬워지다.  

  내용인 즉, 새로운 스키마의 지원에 따른 내용을 쉽게 처리할 수 있다는 것이다.
  <util:XXX> , <jee:XXX> 와 lang, tx, aop 스키마가 추가 지원되고 이에 대한 것이
   IDE 에서의 제공되는 spring 플러그인에서 제공된다는 것이다.
   결과적으로 새로운 것 더 열심히 공부하면 더 쉽게 쓸 수 있다는 것이다. ^^
   참조 : http://static.springframework.org/spring/docs/2.0.x/reference/new-in-2.html

  1.2. XML 작성의 확장

  2.0에서는 단지 쉬어지기만 한 것이 아니라, 좀 더 확장성을 띄고 있다.
    이는 XML 스키마를 직접 작성가능하게 함으로 이를 가능케 한다.
    위에서 언급한 새롭게 등장한 스키마와 같이, 나 또는 팀에서 자주 사용하는 스키마에
    대해서 이미 스키마로 구현이 가능하다는 것이다. (말그대로 확장성을 대폭 강화하여
    spirng을 사용하는 개개인이 스키마 확장까지 가능하게 되었다.)
    참조 : http://static.springframework.org/spring/docs/2.0.x/reference/extensible-xml.html

  1.3. 새로운 bean 범위
    
  기존의 Spring은 IoC 컨네이터 레벨에서 두가지(singleton과 prototype)만 지원했었지만,
    2.0에서는 위의 두가지 이외에 request, session, global session 가 추가되었다.
    앞선 두가지는 local(!) 개발에 후자 3개는 웹기반에 적용된다.
    크게 변화가 없는 듯 하면서도 변화가 생긴 부분이라 하겠다. (기존 사용방식에는 차이가 없다.)
   참조 : http://static.springframework.org/spring/docs/2.0.x/reference/beans.html#beans-factory-scopes
 
2. AOP
 
  2.0에서는 AOP 제공이 매우 향상되었다.
   XML 설정이 쉬워졌으며, AspectJ pointcut 언어와 @AspectJ와 통합되었다.
   (이것은 AspectJ의 리더인 Adrian Colyer가 지난해 9월 IBM에서 Interface21(스프링을 만드는 회사)로
   옮기면서 이미 예견된 부분이다.)

  2.1. 쉬워진 AOP XML 설정

  2.0은 aspects 를 위한 새로운 스키마를 지원한다. AspectJ pointcut 언어와 전체적인 타입에 대한 안내
  (캐스팅이나 Object[]아규먼트와 같은 더이상의 조작은 필요없다.)의 이점을 제공한다.
  <aop:config> 엘리먼트 내에 <aop:aspect> <aop:pointcut> 등과 같은 방법으로 사용 가능하다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/aop.html#aop-schema

  2.2.  @AspectJ aspects의 제공

  2.0 은 @AspectJ annotations의 사용을 제공하고 이는 AspectJ와 Spring AOP간에 공유가 가능하다.

3. Middle Tier (Data Access)

  3.1. XML 내에 선언된 트랜젝션의 설정이 쉬어졌다.

  기존의 1.2.X 스타일이 계속 지원은 되지만, 2.0 스타일을 추천되며, 이 방식은 작성을 쉽게 소스량(!)을
  현저히 줄인다. 주목해야 할 부분은 AspectJ aspects library와 사용이 가능한데 이때 다양한 오브젝트와
  사용이 가능한데 하물며, Sping container에서 생성되지 않은 객체까지 사용이 가능하다는 점이다.
  (의미적으로는 이런데 자세히 봐야되겠다. 기존의 트랜젝션 관리에 있어서 많은 솔루션들이 가지고 있던
  문제가 여러 객체를 거치는 (프로세스를 가지는) 트랜젝션의 처리가 쉽지 않다는 것이였는데, 이 의미로는
  이것 또한 해결이 가능하다는 이야기이므로 정확한 확인이 필요할 듯 싶다.
  이가 가능하다면 엔터프라이즈 솔루션에 있어 상당한 기여가 있을 것 같다.)

  3.2. JPA

  Spring의 JDBC 추상 레이어 목적으로 Hibernate, JDO와 같은 것을 동일한 방법 내에서 포괄적으로
  Java Persistence API를 위해 제공한다.
  + JPA 관련 참조 : http://static.springframework.org/spring/docs/2.0.x/reference/orm.html#orm-jpa
  + Java Persistence API 참고 : http://java.sun.com/developer/technicalArticles/J2EE/jpa/index.html

  3.3. Asynchronous JMS

  개인적으로 오래 기다려온 내용이다.  
    이전의 1.2 버젼까지의 Spring은 JMS를 제공함에 있어 JmsTemplate 클래스가 기능적으로 훌륭히
  추상화하여 사용의 간편함을 제공하였다. 그러나 이것은 메시지의 비동기적인 production 와
  consumption은 지원하는 것이 아니였다.
    이번 2.0 에서는 이러한 부족한 부분을 완성하여 비동기적인 부분까지 지원이 되었다.
    참고 : http://static.springframework.org/spring/docs/2.0.x/reference/jms.html#jms-asynchronousMessageReception

  3.4. JDBC

  Spring의 JDBC 추상 프레임워크 내에 새롭게 주목해야할 크랠스가 있는데,
  첫째가 NamedParameterJdbcTemplate 로 named parameters 의 사용을 지원한다.
  둘째가 SimpleJdbcTemplate 로 기존의 core 기능에서 더욱 사용을 간편하게 만들어졌다. 단, 이는 Java 5(Tiger에서만 사용가능)

  자세한 것은 참조 사이트의 예제를 보면 바로 이해가 될 듯하다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/jdbc.html#jdbc-NamedParameterJdbcTemplate
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/jdbc.html#jdbc-SimpleJdbcTemplate

4. Web

  4.1. Spring MVC를 위한 form fag 라이브러리

  2.0 에서는 많은 개발자들의 요구에 의해 대부분의 JSP tag 라이브러리와 사용이 가능하게 하여,
  개발자의 만족도를 높였다고 확신하고 있다. struts에 있어서도 form tag의 사용에 따른 추가적인 개발
  요소가 만만치 않았던 것을 고려할때
  이에 대한 추가에 따른 개발에 도움이 될지 어떨지는 좀 더 확인 필요할 듯 싶다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/mvc.html
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/spring-form.tld.html

  4.2. Sping MVC 내에 분별력 있는 표준설정

  convention-over-configuration 를 통해 models, views, 와 controllers 의 기본 영역에서 주소를
  제공하여, naming convention의 표준화를 통해 XML 설정에 따른 소스 량을 줄이고, 내용을 명확하고
  쉽게 처리할 수 있도록 한다.
  기존의 무분별한 프로젝트마다의 naming conventions 을 설정한다거나 개개인마다의 방식을 만들어
  가는 것에서 큰 도움이 될 듯하다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/mvc.html#mvc-coc

  4.3. Portlet framework  

  웹기반에 있어서의 Portlet (JSR-168 Portlet)을 지원한다.
  이는 특별한 설명이 필요 없을 듯 싶다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/portlet.html

5. 그밖에

  5.1. Dynamic language 지원

  자바 이외에도 현재 JRuby, Groovy 와 BeanShell 가 포함되어 지원된다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/dynamic-language.html

  5.2. JMX

  Spring에서 지원하던 JMS의 변경은 발전적이상의 획기적인 것으로 ...
  + Controlling the registration behavior : MBean 등록에 있어서 3가지을 제공한다.
      - REGISTRATION_FAIL_ON_EXISTING : MBean 인스턴스가 등록되어 있으면 InstanceAlreadyExistsException 을 통한 등록거부(디폴트),
      - REGISTRATION_IGNORE_EXISTING : MBean 인스턴스가 등록되어 있으면 아무런 에러없이 등록거부(멀티 어플리케이션 환경에 유용)
      - REGISTRATION_REPLACE_EXISTING : MBean 인스턴스가 등록되어 있으면, 이를 등록해지하고 새롭운 MBean으로 등록처리(기존MBean 대처시 유용)
  + Notifications : NotificationListeners을 통한 MBeans의 변경을 모니터링 가능하다.

참조 : http://static.springframework.org/spring/docs/2.0.x/reference/jmx.html#jmx-exporting-registration-behavior
참조 : http://static.springframework.org/spring/docs/2.0.x/reference/jmx.html#jmx-notifications

  5.3. Task scheduling (작업 스케쥴링)

  드럭 리가 심여를 기울여 Tiger에 포함시킨 java.util.concurrent.* 패치지에는 기존의 thread 의
  기능을 강화하고 확장시킨 Executors 라는 인터페이스가 있다. 이는 위의 내용에서 이야기 하다시피
    Java5 에서부터 구현이되어 사용이 가능하다.
  이에 2.0 에서는 Java 1.3, 1.4 에서도 Executors와 같은 기능(thread pools)을 가능케 하고자 이와
  동일한 기능의 (하지만 세부적인 구현을 더 추상화 시킨) TaskExecutor 를 제공한다.
  이에 대한 것은 아래를 참조하면 된다.
  (얼마전 리스너를 여러개 띄운 상태에서의 스케쥴링을 해야하는 프로그램을 작성한 적이 있었다.
     Spring에서 Quartz Scheduler를 사용하여, 처리하려 하였지만 데드락의 징후(!)가 보여 충분한 테스트
     도 채하기도 전에(기간이  촉박했던 것이였기에) thread 로 대처하여 어찌어찌 작성을 했었다.
     돌이켜 기억해보면 이때 이 기능을 사용했으면  여러가지 도움이 되었을텐데라는 생각이 든다.)  
  그 이외에도 scheduling 관련해서 문서상으로도 많은 보강이 있어 보인다. (특히 Pooling 관련)

  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/scheduling.html#taskexecutor  

  5.4. Java 5 (Tiger) 지원
  제목과 같이 Java 5 (Tiger)을 지원하는 기능들이 추가 되었다.

  - Using AspectJ to dependency inject domain objects with Spring :
     http://static.springframework.org/spring/docs/2.0.x/reference/aop.html#aop-atconfigurable
    - @AspectJ support :
     http://static.springframework.org/spring/docs/2.0.x/reference/aop.html#aop-ataspectj
    - Using @Transactional with AspectJ :
     http://static.springframework.org/spring/docs/2.0.x/reference/transaction.html#transaction-declarative-aspectj
  - @Required :
     http://static.springframework.org/spring/docs/2.0.x/reference/metadata.html#metadata-annotations-required
  - SimpleJdbcTemplate :
     http://static.springframework.org/spring/docs/2.0.x/reference/jdbc.html#jdbc-SimpleJdbcTemplate

6. 샘플 업데이트
  전반적인 소스의 업데이트와 showcases 라는 폴더가 새롭게 생겼다.

7. 문서의 향상
  2.0 에 맞춰 새롭게 레퍼런스 문서가 작성되었다.  

Posted by 아름프로
BLOG main image

카테고리

분류 전체보기 (539)
이야기방 (19)
토론/정보/사설 (16)
IBM Rational (9)
U-IT (0)
SOA/WS/ebXML (110)
개발방법론/모델링 (122)
J2SE (34)
J2EE (60)
DataBase (39)
Open Projects (30)
BP/표준화 (50)
Apache Projects (15)
Web/보안/OS (22)
Tools (7)
AJAX/WEB2.0 (1)
Linux/Unix (1)
영어 (0)
비공개방 (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

글 보관함

Total :
Today : Yesterday :