자바빈

JavaBeans

Java Platform 기반의 컴퓨팅에서 JavaBeansSun Microsystems에 의해 개발되어 JDK 1.1의 일부로 1996년에 출시된 기술입니다.

JavaBeans의 '빈'은 하나 이상의 개체를 단일 표준화된 개체(빈)로 캡슐화하는 클래스입니다.이 표준화를 통해 원두를 보다 일반적인 방법으로 처리할 수 있으므로 코드 재사용자기성찰쉬워집니다.이것에 의해, 원두를 소프트웨어 컴퍼넌트로 취급해, 편집자나 IDE에 의해서 시각적으로 조작할 수 있게 됩니다.또, 초기설정이나 내부 실장의 상세를 알 필요도 없습니다.

표준화의 일부로서 모든 콩은 시리얼화 가능해야 하며 제로 인수 생성자가 있어야 하며 getter setter 메서드를 사용하여 속성에 액세스할 수 있어야 합니다.

특징들

자기성찰
Introspection은 Bean의 기능을 판단하기 위해 Bean을 분석하는 과정입니다.이는 설계 도구와 같은 다른 응용 프로그램이 컴포넌트에 대한 정보를 얻을 수 있도록 하기 때문에 Java Beans 사양의 필수 기능입니다.
특성.
속성은 Bean 상태의 하위 집합입니다.속성에 할당된 값에 따라 해당 구성 요소의 동작과 모양이 결정됩니다.세터 방식으로 설정되며 게터 방식으로 얻을 수 있습니다.
커스터마이즈
커스터마이저는 특정 컨텍스트에서 구성 요소를 사용하기 위해 프로세스가 따라야 하는 단계별 가이드를 제공할 수 있습니다.
이벤트
빈은 EventObject EventListener [clarification needed]모델과 상호 작용할 수 있습니다.
고집
지속성은 Bean의 속성 및 인스턴스 변수 값을 포함하여 Bean의 현재 상태를 비휘발성 스토리지에 저장하고 나중에 가져올 수 있는 기능입니다.
방법들
Bean은 속성을 캡슐화하기 위해 접근자 메서드를 사용해야 합니다.Bean은 속성에 대한 액세스와 관련이 없는 다른 비즈니스 로직 방법을 제공할 수 있습니다.

이점

  • 콩의 속성, 이벤트 및 메서드는 다른 응용 프로그램에 노출될 수 있습니다.
  • 빈은 다른 개체로부터 이벤트를 수신하도록 등록하고 다른 개체로 전송되는 이벤트를 생성할 수 있습니다.
  • 보조 소프트웨어를 제공하여 콩을 구성할 수 있습니다.
  • 콩의 구성 설정을 영구 스토리지에 저장하고 복원할 수 있습니다.

단점들

  • 인수 생성자가 0인 클래스는 비활성 [1]상태에서 인스턴스화될 수 있습니다.이러한 클래스가 개발자에 의해 수동으로 인스턴스화되면(어떤 종류의 프레임워크에 의해 자동으로 인스턴스화되지 않고), 개발자는 클래스가 부적절하게 인스턴스화되었음을 인식하지 못할 수 있습니다.컴파일러는 이러한 문제를 검출할 수 없습니다.또, 그것이 문서화되어 있다고 해도, 개발자가 메뉴얼을 참조할 수 있는 것은 아닙니다.
  • JavaBeans는 본질적으로 가변성이기 때문에 불변[1]객체가 제공하는 이점이 없습니다.
  • 모든 속성에 대해 getter를 생성해야 하고, 많은 속성, 대부분의 속성 또는 모든 속성에서 getter를 생성해야 하는 경우 엄청난 양의 보일러 플레이트 코드가 생성될 수 있습니다.이것은 롬복과 같은 도구를 사용하여 완화할 수 있습니다.

JavaBeans API

JavaBeans 기능은 의 클래스 및 인터페이스 세트에 의해 제공됩니다.java.beans패키지.

인터페이스 묘사
애플릿 이니셜라이저 인터페이스의 메서드는 애플릿이기도 한 콩을 초기화하기 위해 사용됩니다.
빈 정보 설계자는 이 인터페이스를 사용하여 Bean의 이벤트, 메서드 및 속성에 대한 정보를 지정할 수 있습니다.
커스터마이저 이 인터페이스를 통해 설계자는 빈을 구성할 수 있는 그래피컬 사용자 인터페이스를 제공할 수 있습니다.
디자인 모드 이 인터페이스의 메서드에 따라 빈이 설계 모드로 실행되고 있는지 여부가 결정됩니다.
예외 리스트너 이 인터페이스의 메서드는 예외가 발생했을 때 호출됩니다.
Property Change Listener 바인드 속성이 변경되면 이 인터페이스의 메서드가 호출됩니다.
Property Editor(프로퍼티 에디터) 이 인터페이스를 구현하는 개체를 사용하면 설계자가 속성 값을 변경하고 표시할 수 있습니다.
거부 가능한 변경 리스트너 이 인터페이스의 메서드는 Constrainted 속성이 변경되면 호출됩니다.
가시성 이 인터페이스의 메서드를 사용하면 GUI를 사용할 수 없는 환경에서 빈을 실행할 수 있습니다.

JavaBean 표기법

JavaBean 클래스로 기능하려면 오브젝트 클래스가 메서드 이름 지정, 구성 및 동작에 대한 특정 규칙을 따라야 합니다.이러한 규약을 통해 Java Bean을 사용, 재사용, 교체 및 연결할 수 있는 도구를 사용할 수 있습니다.

필요한 표기법은 다음과 같습니다.

  • 클래스에는 (인수가 없는) 공용 기본 생성자가 있어야 합니다.이를 통해 편집 및 활성화 프레임워크 내에서 쉽게 인스턴스화할 수 있습니다.
  • 클래스 속성은 표준 명명 규칙에 따라 get, set, is(get 대신 boolean 속성에 사용할 수 있음), to 및 기타 메서드(일명 접근자 메서드 및 뮤테이터 메서드)를 사용하여 액세스할 수 있어야 합니다.이를 통해 프레임워크 내에서 콩 상태를 쉽게 자동 검사하고 업데이트할 수 있습니다. 프레임워크의 대부분은 다양한 유형의 속성에 대한 커스텀 에디터를 포함합니다.설정자는 하나 이상의 인수를 가질 수 있습니다.
  • 클래스는 직렬화할 수 있어야 합니다.이를 통해 애플리케이션 및 프레임워크는 VM 및 플랫폼에 의존하지 않는 방식으로 Bean의 상태를 안정적으로 저장, 저장 및 복원할 수 있습니다.

코드 예시

패키지 플레이어;  일반의 학급 PersonBean 용구 자바.이오.시리얼화 가능 {      /** 속성 **/     사적인 부울 사망. = 거짓의;      사적인 목록. 목록.;      /** 속성 "이름", 읽기/쓰기 가능.*/     사적인 스트링 이름. = 무효;      /** no-arg 컨스트럭터(인수 없음).*/     일반의 PersonBean() {     }      일반의 목록. 리스트의 취득() {         돌아가다 목록.;     }       일반의 무효 set List(세트 리스트)(최종 목록. 목록.) {         이것..목록. = 목록.;     }      /** * 속성 "name"의 getter. */     일반의 스트링 getName() {         돌아가다 이름.;     }      /** * 속성 "name"을 설정합니다. * * @syslog 값 */     일반의 무효 setName(최종 스트링 가치) {         이것..이름. = 가치;     }      /** * "사기된" 속성의 Getter * 부울 필드의 다른 구문(v.s. get) */     일반의 부울 소멸.() {         돌아가다 사망.;     }      /** * 속성 "disced"에 대한 설정자입니다. * @syslog 값 */     일반의 무효 set Deached(실패)(부울 가치) {         사망. = 가치;     } } 

다음과 같습니다TestPersonBean.java.

수입품 player. Person Bean;  /** * 클래스 "TestPersonBean" 입니다. */ 일반의 학급 Test Person Bean {     /** * 클래스 "PersonBean"의 테스터 메서드 "main"입니다. * * @internal 인수 */     일반의 정적 무효 주된(최종 스트링[] 논쟁들) {         최종 PersonBean 사람인 = 신규 PersonBean();          사람인.setName();         사람인.set Deached(실패)(거짓의);         사람인.set List(세트 리스트)(신규 어레이 리스트());          // 출력: "Bob [alive]"         시스템..나가..인쇄물(사람인.getName());         시스템..나가..인쇄(사람인.소멸.() ? "[스윽]" : "[스윽]");     } } 
<jsp:useBean id="person" class="player."PersonBean" scope="page"/> <jsp:setProperty name="person" property="*"/> <br/> 사망?<jsp:getProperty name="person" property="property"/> <br/> <br/> <폼명="beanTest" 메서드="POST" action="testPersonBean.jsp"> 이름 입력: <input type="text" name="name" size="50"> <br/> 옵션 선택: <select name="false"> Alive </option> <option value="true"데드 </option> </select> <input type="value="빈 테스트"> </form> </body> </html>

레퍼런스

  1. ^ a b Bloch, Joshua (2008). Effective Java (Second ed.). Addison-Wesley. p. 13. ISBN 978-0-321-35668-0.

외부 링크