This is version . It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]

! 개요#

9.1. 자바 엔터프라이즈 플랫폼과 스프링 애플리케이션#

9.1.1. 클라이언트와 백엔드 시스템#

  • 스프링은 웹브라우저를 클라이언트로 하고 DB에 데이터를 저장, 조회하는데 집중되어 있다.
  • 클라이언트가 반드시 웹브라우저일 필요는 없고 RIA나 HTTP프로토콜을 사용하는 다른 시스템일수도 있다.
  • 백엔드 시스템은 DB뿐 아니라 메시징 서버, 메일서버, 메인프레임등 다양하게 사용이 가능하다.
  • 스프링 엔터프라이즈 애플리케이션의 서비스와 협력구조
그림 1-1

애플리케이션 서버#

  • 스프링 애플리케이션을 배포하려면 JavaEE서버가 필요하다.
  • JavaEE서버는 크게 두가지로 분류할 수 있다.

경량급 WAS/서블릿 컨테이너#

  • 톰캣과 제티와 같은 가벼운 서블릿 컨테이너
  • EJB나 리소스 커넥터, WAS가 제공하는 분산 서비스등이 굳이 필요하지 않다면 서블릿 컨테이너로도 충분하다.

WAS#

  • 스프링은 3.0기준으로 J2EE 1.4와 JavaEE 5.0에 완벽히 호환된다. 일부 JavaEE 6.0의 기능을 지원하기도 한다.

스프링 소스 tcServer#

  • 스프링을 개발하는 스프링소스에는 아파치 프로젝트인 HTTPD와 톰캣의 핵심 개발자가 많다.
  • 톰캣 기반으로 엔터프라이즈 스프링 애플리케이션에 최적화된 경량급 애플리케이션 서버인 tcServer를 개발했다.
    • 톰캣에 비교해서 고급서버관리, 배포기능과 진단기능을 추가로 포함하고 있다.

9.1.3. 스프링 애플리케이션의 배포단위#

https://docs.oracle.com/cd/E19830-01/819-4712/ablgz/index.html

독립 웹 모듈#

  • 스프링은 보통 war로 패키징된 독립 웹 모듈로 배포된다.

엔터프라이즈 애플리케이션#

  • 확장자가 ear인 엔터프라이즈 애플리케이션으로 패키징해서 배포할수도 있다.

백그라운드 서비스 모듈#

  • J2EE 1.4에서 등장한 rar패키징 방법도 있다.
  • rar는 리소스 커넥터를 만들어 배포하는 방식인데 스프링으로 만든 애플리케이션이 UI는 필요없고 서버내에서 백그라운드 서비스처럼 동작할 필요가 있다면 rar모듈로 만들어서 배포할수 있다.

9.2. 개발도구와 환경#

http://en.wikipedia.org/wiki/Java_EE_version_history#Java_EE_5_.28May_11.2C_2006.29

9.2.1. JavaSE와 JavaEE#

JavaSE/JDK#

  • 스프링 3.0은 JavaSE 5 버전에서 추가된 언어와 문법의 특징을 최대한 활용해서 개발했기 때문에 JDK 5.0 이상의 버전이 필요하다.
  • JDBC 4.0과 같은 일부 기능은 JDK 6.0 이상에 추가된 기능이라 JDK 6.0 이상을 사용해야 한다.

JavaEE/J2EE#

  • 스프링 3.0은 J2EE 1.4나 JavaEE 5.0 이 필요하다.
  • 스프링 3.0 자체는 JDK 6.0과 Java 5.0 을 기준으로 개발됐지만 주요 기능은 JDK 5.0 에서 동작하도록 J2EE 1.4버전과 호환된다.
  • 다만 J2EE 1.4 버전 서버를 사용할때는 JDK 5.0에서 동작하는지 반드시 확인이 필요하다.

카페에서는#

  • 톰캣 6.0을 사용함
    • http://tomcat.apache.org/tomcat-6.0-doc/index.html
    • Servlet 2.5 과 JavaServer Pages 2.1 를 지원하기 때문에 JavaEE 5.0을 사용함

9.2.2. IDE#

  • 이클립스
  • 넷빈즈
  • 인텔리제이

9.2.3. SpringSource Tool Suite#

  • 스프링 개발에 필요한 플러그인이 포함되어 있다.
  • 스프링 플러그인외에도 개발에 필요한 각종 플러그인이 포함되어 있고 스프링소스에서 필요한 검증을 마치고 릴리즈한다.

SpringIDE 플러그인 #

책에는 스샷이 많음.. 보강하자.
  • 빈 클래스 이름 자동완성
  • 빈 설정 오류검증 기능
  • 프로젝트 생성, 설정파일 생성, 빈 등록 마법사
  • 빈 의존관계 그래프
  • AOP 적용대상 표시
  • 기타 지원기능

STS 플러그인#

  • 스프링 개발과 설정파일 편집을 지원하는 SpringIDE에 더해서 스프링 애플리케이션의 서버 배치와 같은 추가기능을 제공해준다.

기타 플러그인#

  • M2Eclipse : 메이븐 플러그인
  • AJDT : AspectJ Development Tool의 약자로 이클립스에서 AspectJ AOP를 이용한 개발을 지원하는 툴이다.
  • VMCI
  • 이클립스 표준 플러그인 : WTP(Web Tool Platform) 등등

9.2.4. 라이브러리 관리와 빌드 툴#

라이브러리 관리의 어려움#

  • 자바는 모듈이라는 개념이 없다.
    • 같은 패키지와 클래스명을 가진 a.jar, b.jar 가 모두 같은 클래스패스에 있을때 둘중 어떤 것을 사용할지 선택할수 없다.
    • 즉 자바에서 jar파일은 압축 패키징 방법일뿐 구분가능한 독립된 모듈이 아니다.
  • 이런 문제를 해결하기 위해서 가장 간단한 방법은 재패키징이다.
    • C 1.0과 C 2.0 모두 org.library.LibClass 라는 클래스명이라면 그 중 하나를 org.library.repack.LibClass 로 명명한다.
    • 이 클래스를 사용하는 라이브러리도 변경된 패키지의 클래스를 사용하도록 수정해야 한다.
  • 스프링은 의존관계의 문제가 많은 라이브러리의 경우 이런 재패키징 방식을 사용한다.
    • ASM은 버전별로 호환이 안되기로 유명한 라이브러리다.
    • org.springframework.asm 이라는 스프링 패키지 하위로 재패키징했다.

라이브러리 선정#

  • 스프링 모듈
    • 스프링 모듈은 총 20개의 모듈이 있다.
    • 어떤 경우에 어떤 모듈이 필요한지에 대해서는 부록 A.2절의 "스프링 모듈의 의존관계" 를 참고
  • 라이브러리

빌드툴과 라이브러리 관리#

Add new attachment

Only authorized users are allowed to upload new attachments.
« This particular version was published on 15-Dec-2014 21:17 by DongGukLee.