대부분의 자바 개발자들은 객체 속성의 getters와 setters에 대한 자바빈즈 네이밍 패턴에 따르는 자바 클래스들을 만들곤 한다.
이러한 상호대응하는 getXxx 와 setXxx 메소드들를 호출하는 방식으로 직접 이들 메소드들에 접근함은 자연스럽다. 그러나 자바 객체
속성들에 대한 동적인 접근이 필요한 경우가 종종 발생한다.(호출되는 속성의 getter 와 setter 메소드들의 compiled-in
지식없이) . 다음과 같은 경우들이 포함된다.
- Building scripting languages that interact with the Java object model (such
as the Bean Scripting Framework).
- Building template language processors for web presentation and similar uses
(such as JSP or Velocity).
- Building custom tag libraries for JSP and XSP environments (such as Jakarta
Taglibs, Struts, Cocoon).
- Consuming XML-based configuration resources (such as Ant build scripts,
web application deployment descriptors, Tomcat's
server.xml
file).
자바 언어는 Reflection 와 Introspection API들을 제공한다.(JDK Javadoc
안의 java.lang.reflect 과 java.beans 패키지를 보라.). 그러나 , 이들 API들은 이해하고 활용하기에 매우 복잡해질
수 있다. BeanUtils 콤프넌트는 이들의 능력을 쉽게 사용할 수 있도록 랩퍼를 제공한다