2011-09-30 5 views
4

설명서를 읽었지만 Dynamic Bean의 주 목적에 대한 정의가 없습니다. 이 구현하는 방법을 이해하지만 왜 이렇게 접근 잘 모르겠다.ATG에서 Dynamic Bean의 목적은 무엇입니까

그렇다면 누군가가 Dynamic Bean을 사용할 때 상황을 알 수 있습니까?

감사

답변

2

동적 콩은 일반적으로 당신이 얻을 및 명시 적 회원이 아닐 수도 있습니다 필드를 설정할 수 있습니다. 가장 직접적인 비교는지도입니다.지도를 사용하면 미리 정의하지 않고 필드를 가져오고 설정할 수 있습니다. 그러나 다이야 늄 빈은 표준 Java 관용어 (getter/setters)를 준수합니다.

그러나 해시 맵과 달리 dyanbeans는 제약 조건을보다 쉽게 ​​적용 할 수 있습니다 (기본 데이터 구조 구현을 숨겨서 게으르거나 설정할 때 데이터 연결 등을 할 수 있습니다). 예를 들어 명시 적으로 dynabean에 getter 또는 setter를 쉽게 추가 할 수 있으며 코드는 매우 관용적으로 읽고 다른 bean api와 완벽하게 상호 작용합니다. ATG에서 동적 콩에 대한

public int getCost() 
{ 
    if(this.get("cost")==null) 
    return -1; 
    return Integer.parseInt(super.get("cost")); 
} 
+0

고마워요. 사용법 DynamicBeans의 시험 상황을 말씀해 주시겠습니까? – Oleksandr

+0

예 ... 행에서 데이터를 가져 오는 db가 있다고 상상해보십시오. 중요한 필드에 대해 재정의 될 수있는 표준 getter 및 setter를 사용하여 각 행 (bean)에 대한 객체를 만들려고합니다. 동적 bean이 여기에 사용됩니다. – jayunit100

2

가장 유용한 부분은 이미 적용되지 않는 클래스를 추가 DynamicPropertyMapper 클래스를 제공하고있다. 먼저 DynamicBeans.setPropertyValue (object, property, value) 및 DynamicBeans.getPropertyValue (object, property) 정적 메서드를 사용하여 Java Bean 속성과 반드시 ​​일치하지 않는 객체의 속성을 설정하거나 가져올 수 있습니다. 사용중인 객체가 동적 빈에 등록되어 있지 않으면 기본적으로 Java Bean 속성을 사용하려고 시도합니다. 저장소 항목 (저장소 항목 속성에 해당하는 속성, 자연스럽게 프로필 개체에도 적용), DynamoHttpServletRequest 객체 (서블릿 매개 변수에 해당),지도/사전 (키에 해당) 및 기타 항목을 사용하여 즉시 수행 할 수있는 지원이 제공됩니다. DOM Node 객체 (Node의 getters/setter가 뒤에 오는 요소 속성에 해당).

더 많은 클래스를 추가하려면 DynamicPropertyMapper를 확장하는 클래스를 만들어야합니다. 예를 들어, HttpSession 객체가 HttpSession의 getter 및 setter에 대한 대체 속성을 사용하여 비슷하게 작동하도록 만들고 싶다고 가정 해 보겠습니다. 그런 다음 DynamicPropertyMapper에서 세 가지 메소드를 구현하면 구현중인 객체에 대한 사용자 정의 BeanInfo 또는 DynamicBeanInfo 클래스가없는 경우 DynamicBeans.getBeanInfo (객체)를 사용하여 getBeanInfo (객체) 클래스를 쉽게 구현할 수 있습니다. .

일단 DynamicPropertyMapper가 있으면 DynamicBeans.registerPropertyMapper (매퍼)에 등록 할 수 있습니다. 일반적으로 이것은 프로퍼티 매퍼를 작성하는 클래스의 정적 초기화 블록에 삽입됩니다. 그러나 HttpSession과 같은 다른 클래스에 대한 속성 매퍼를 만드는 경우 doStartService()에서 register 메서드를 호출하는 전역 적으로 범위가 지정된 일반 서비스를 만들고 싶어합니다. 그런 다음 해당 서비스를 초기 서비스에 추가 할 수 있습니다.

관련 문제