더북(TheBook)

자바 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) 애플리케이션을 더 쉽게 안전하고 탄탄하게 구축하는 방향으로 설계됐습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.