소개
JavaBean은 간단하고 강력한 Java 컴포넌트 모델을 정의합니다. JavaBean의 목표는 개발자가 프로그램으로 조작하거나 가시적으로 빌더 도구에서 조작할 수 있는 자체 포함된 재사용가능한 장치에 제공하는
것입니다.
JavaBean은 GUI 제어일 수 있거나 가시적 표시가 부족할 수 있습니다. Java의 GUI 제어는 보통 빌더 도구로 조작되기 위한 JavaBean입니다. J2EE에서 간단한 JavaBeans는 보통 JSP에서
사용되며, 여기서 JavaBean에 포함된 HTML 및 Java 코드에서의 프리젠테이션 분리를 제공합니다.
JavaBean은 세 가지 구분되는 기능을 가진 Java 클래스입니다.
JavaBean 특성
JavaBean의 특성은 다른 컴포넌트에서 액세스될 수 있습니다. 일반적으로 특성은 setter 및 getter 메소드를 통해 액세스되는 개인용 값이지만 계산된 값일 수 있습니다. 특성 갱신은 여러 부작용을 일으킬
수 있습니다.
액세서는 특성을 액세스하는 메소드입니다. 액세서는 getter 및 setter일 수 있으며, 이름 지정 규칙을 따릅니다.
void setPropertyName(PropertyType value); // setter
PropertyType getPropertyName() // getter
부울 특성의 경우, getter는 다음과 같을 수 있습니다.
boolean isPropertyName() // getter for a boolean property
예제: 고객 Bean
다음은 두 가지 간단한 특성(이름 및 전자 우편)를 포함하는 간단한 JavaBean(고객)의 예입니다. set/get 메소드 쌍을 통해 특성을 정의하는 방식에 주의하십시오.
public class Customer {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String aName) {
name = aName;
}
public String getEmail() {
return email;
}
public void setEmail(String aEmail) {
email = aEmail;
}
}
간단한 JavaBean은 JSP에서 자주 사용되며, 웹 페이지의 양식에서 값의 전송을 가능하게 합니다.
색인화된 특성
단일 값을 갖는 단순한 정보 이외에, 특성은 배열에 포함된 값의 세트일 수 있습니다.
색인화된 특성은 지정된 색인으로 값을 리턴하거나 전체 값 배열을 리턴할 수 있습니다.
색인화된 특성에는 다음과 같은 서명이 있습니다.
void setPropertyName(int index, PropertyType value); // indexed setter
PropertyType getter(int index); // indexed getter
void setPropertyName(PropertyType values[]); // array setter
PropertyType[]getPropertyName(); // array getter
바인드된 특성
바인드된 특성 메커니즘은 특성 변경 시 알림 서비스를 제공합니다. 변경에 대한 통보를 받으려는 관심있는 오브젝트는 미리 자체 등록하여, 특성 변경 발생 시 등록된 오브젝트로 알림이 보내집니다. 일반적으로 이 알림은
특성이 설정된 이후에 바인드된 특성이 있는 컴포넌트에 의해 시작되는 이벤트를 통해 수행됩니다.
바인드된 특성이 있는 JavaBean은 리스너라는 관심있는 오브젝트의 등록 및 등록 취소를 위한 메소드를 표시합니다. 개발자는 자체 알림 메커니즘을 정의할 수 있지만, Java 라이브러리는
java.beans 패키지에서 일반적으로 사용되는 몇 개의 지원 클래스를 제공합니다.
제한된 특성
제한된 특성은 바인드된 특성과 유사하지만, 특성이 실제로 설정되기 전에 알림이 발생합니다. PropertyVetoException을 발생시켜 관계자가 특성을 변경하지 못하게 합니다.
이벤트 및 알림
이벤트는 상태 변경에 대한 정보를 전달하여 독립적으로 개발된 컴포넌트가 서로 통신할 수 있게 하는 JavaBean의 기능입니다. 이 모델에서 일부 컴포넌트는 이벤트 리스너의 역할로 다른 컴포넌트가 처리하는 이벤트를
시작합니다.
이 커뮤니케이션 모델을 지원하기 위해 JavaBeans 컴포넌트 모델은 다음을 제공합니다.
-
이벤트를 시작(fire)할 수 있는 특성(바인드된 특성 및 제한된 특성)
-
리스너가 자신을 등록할 수 있는 등록 메소드
-
변경 정보를 전달하는 이벤트
-
전달된 이벤트에 대해 반응할 수 있는 리스너
다음 클래스 다이어그램은 간단한 int 특성을 포함하는 EventSource라는 JavaBean의 개념을 설명합니다.
구체적 리스너는 구성 중에 JavaBean으로 등록됩니다. 나중에 어떤 지점에서 일부 다른 오브젝트가 이벤트 오브젝트를 작성하여 알림 프로세스를 시작하는 setProperty 메소드를 호출합니다.
EventSource JavaBean은 등록된 모든 리스너에서 propertyChange 메소드를 호출합니다. 이벤트 리스너는 이벤트를 수신하여 값을 읽고 이벤트에 반응합니다.
다음 시퀀스 다이어그램은 호출 순서를 설명합니다.
리스너의 알림은 이벤트의 소스인 JavaBean 인스턴스에 대하여 동기화되지만, 이벤트 리스너는 다른 스레드에서 이벤트 처리를 수행할 수 있습니다.
내성
내성(introspection)은 JavaBean의 특성, 이벤트 및 메소드의
검출을 가능하게 하는 런타임 메커니즘입니다. 내성은 다른 컴포넌트에서 하드 코딩된 종속성을 사용하지 않는 프로그램과 개발 도구에서 사용됩니다. 내성은 메소드 및 인터페이스의 이름 지정을 위한 규칙 세트와 반영을
통해 이루어집니다. 내성의 추가 기능은 BeanInfo 클래스에서 지원됩니다. 내성에 사용되는 JavaBean 이름 지정 규칙은 때로 "디자인 패턴"이라고 하지만, 객체 지향 디자인에서 디자인 패턴의
개념과 혼동되지 않아야 합니다.
지속성
JavaBean은 직렬화 메커니즘을 통해 지속될 수 있습니다. JavaBean이 직렬화 가능 또는 구체화 가능 인터페이스를 구현하는지 여부에 따라 직렬화는 자동화 또는 사용자 정의될 수
있습니다. JDK 1.4는 XML 형식으로 JavaBean 인스턴스의 저장을 제공하는 XMLEncoder 및 XMLDecoder 클래스를 소개합니다.
사용자 정의
JavaBean의 모양과 동작은 디자인 시간에 사용자 정의될 수 있습니다. 이것은 그래픽 사용자 인터페이스에서 사용되는 시각적 JavaBean에 특히 중요합니다. 사용자 정의는 특성 편집기나 사용자 정의기를
사용하여 수행됩니다. 사용자 정의기는 디자인 시간에 JavaBean 인스턴스를 구성하는 사용자 정의 사용자 인터페이스를 제공합니다.
BeanContext
BeanContext는 JavaBean이 성능 및 서비스의 환경을 문의할 수 있도록 논리적 포함 계층 구조를 정의합니다. BeanContext 메커니즘은 계층 구조의 JavaBeans에서 제공하는 서비스의
찾아보기와 JavaBeans의 논리적 포함 계층 구조의 지원을 제공합니다.
JavaBean™ 활성화 프레임워크
Java 활성화 프레임워크는 데이터 유형을 판별하고, 캡슐화하고, 일부 데이터에서 원하는 오퍼레이션에 해당하는 소프트웨어 컴포넌트의 사용 가능한 오퍼레이션 및 인스턴스화를 발견할 수 있는 표준 Java 확장입니다.
자세한 정보
JavaBean에 대한 자세한 정보는 http://java.sun.com/의 JavaBean API 스펙, 버전 1.01을
참조하십시오(Docs & Training > Java 2 Platform, Standard Edition > Java 2 SDK, SE v1.3 documentation >
JavaBeans > JavaBeans Specification 링크 수행).
|