Page 19 -
P. 19

자바 EE 프로그래밍 모델은 J2EE 이후 눈에 띄게 단순해졌습니다. 애너테이션이 XML 서술자 파일(descriptor file)을
                   대체하면서 수동 설정 대신 ‘설정보다 관례(Convention over Configuration, CoC)’라는 개념이 정착됐고 리소스 생
                   성 및 검색 과정을 의존체를 주입으로 감추었습니다. 개발자들은 설계/코딩 방식을 다시 생각하게 됐지요.

                   엔터프라이즈 애플리케이션을 J2EE로 개발하는 일은 쉬워졌습니다. 메타데이터를 애너테이션으로 달아놓은 POJO만
                   있으면 EJB(상태성/무상태성), 서블릿(servlet), JSF 기반 빈(backing bean), 퍼시스턴스 개체(persistence entity),
                   싱글톤, REST 웹 서비스로 만들 수 있습니다. XML 배포 서술자 형태로 서비스를 선언할 수도 있게 됐죠.

                   코드 2-1은 POJO를 싱글톤 빈으로 만든 코드로 서버 시동 시 초기화한 다음부턴 컨테이너가 관리합니다. 간단히 클래
                   스에는 @Singleton과 @Startup을, 초기화 메서드에는 @PostConstruct를 붙입니다(애너테이션은 4장 싱글톤 패턴
                   에서 더 자세히 다뤄요).

                    코드 2-1 POJO에 애너테이션을 붙여 컨테이너-관리 싱글톤 빈으로 만듦
                   package com.devchronicles.singleton;

                   import java.util.HashMap;
                   import java.util.Map;
                   import javax.annotation.PostConstruct;
                   import javax.ejb.Singleton;
                   import javax.ejb.Startup;

                   @Startup
                   @Singleton
                   public class CacheSingletonBean {
                       private Map<Integer, String> myCache;

                       @PostConstruct
                       public void start() {
                           myCache = new HashMap<Integer, String>();
                       }

                       public void addUser(Integer id, String name) {
                           myCache.put(id, name);
                       }

                       public String getName(Integer id) {
                           return myCache.get(id);
                       }
                   }


                   J2EE의 목표는 예나 지금이나 변함없습니다. 지금도 속도, 보안, 믿음성을 보장하는 분산(distributed)/거래형
                   (transactional) 애플리케이션의 요건을 개발자와 현업 담당자가 계속 인지하고 있습니다. 자바 EE 플랫폼은 대규모
                   (large-scale) 다중 티어(multitier) 애플리케이션을 더 쉽게 안전하고 탄탄하게 구축하는 방향으로 설계됐습니다.








         java_06.indd   36                                                                       2017-02-28   �� 3:00:51
   14   15   16   17   18   19   20   21   22   23