내성, 자바빈,PropertyDescriptor 클래스,Introspector 클래스,BeanUtils 도구 패키지

5392 단어
JavaBean
JavaBean은 주로 데이터 정보를 전달하는 데 사용되며, 그 방법은 개인 변수에 접근하는 데 사용되며, 방법명은 특정한 규칙에 부합된다.두 모듈 사이에 정보를 전달할 경우 값 객체(Value Object) 또는 VO라고 하는 JavaBean에 정보를 캡슐화할 수 있습니다.방법이 비교적 적다.이 정보는 클래스의 개인 변수에 저장되며 set (), get () 을 통해 얻을 수 있습니다.
내성은 주로 자바빈에 대한 조작이다.자바빈 내부의 방법은 void setage (int age), int getage () 와 같은 규칙에 따라 명명해야 합니다.자바빈은 일반 클래스로 조작할 수 있다.일반 클래스 내부에 set (), get () 방법이 있으면 자바빈으로도 사용할 수 있습니다.
JavaBean의 속성은 get()과 set() 방법으로 추정됩니다. 즉, get, set 후의 알파벳을 제거합니다. 예를 들어 속성은 구성원 변수가 아니라 구성원 변수입니다. 구성원 변수가 보이지 않기 때문입니다.속성명을 얻는 규칙: 속성명의 두 번째 자모가 소문자라면 첫 번째 자모를 소문자로 한다.예를 들어 gettime->time, settime->time, getcPU->CPU.
JavaBean의 이점:
1. JavaEE 중 많은 곳에서 JavaBean을 사용해야 한다.
2. JDK가 JavaBean에게 제공하는 API를 내성이라고 한다.
더 많은 JavaBean 콘텐츠 만나기 전 블로그.
PropertyDescriptor 클래스
PropertyDescriptor 클래스는 JavaBean 클래스가 스토리지를 통해 속성을 내보내는 것을 나타냅니다.주요 방법:
1, getPropertyType(), 속성을 획득한 Class 객체.
2. getReadMethod(), 속성 값을 읽는 방법 획득하기;getWriteMethod(), 속성 값을 쓰는 방법을 얻습니다.
3, hashCode(), 대상의 해시 값을 획득합니다.
4.setReadMethodMethodreadMethod), 속성 값을 읽는 방법을 설정합니다.setWriteMethodMethodwriteMethod), 속성 값을 쓰는 방법을 설정합니다.
 
속성 이름을 사용하여 값을 얻으려면 다음과 같이 반사 방법을 사용합니다.
ReflectPoint pt1 = new ReflectPoint(7,9);
String propertyName = "x";// , 
PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
Method methodGetX = pd.getReadMethod();//Read get() 
Object reValue = methodGetX.invoke(pt1);

다음과 같은 속성 값을 설정합니다.
String propertyName2 = "y";// , 
PropertyDescriptor pd2 = new PropertyDescriptor(propertyName2,pt1.getClass());
Method methodSetY = pd2.getWriteMethod();//Write set() 
methodSetY.invoke(pt1,3);

 
Introspector 클래스
JavaBean의 속성을 캡슐화하여 작업합니다.프로그램에서 하나의 클래스를 자바빈으로 간주하는 것을 보면 인트로스펙터를 호출하는 것이다.getBeanInfo () 방법으로 얻은 BeanInfo 대상은 이 종류를 자바빈이 본 결과 정보, 즉 속성의 정보로 봉인했다.
getPropertyDescriptors (), 속성에 대한 설명을 얻을 수 있으며, BeanInfo를 옮겨다니는 방법으로 클래스의 속성을 찾고 설정할 수 있습니다.
private static Object getProperty_2(Object pt1, String propertyName) throws Exception {  
    BeanInfo beanInfo = Introspector.getBeanInfo(pt1.getClass());        
    PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();  
    Object reValue = null; 
  for(PropertyDescriptor pd : pds){    
        if(pd.getName().equals(propertyName)){    
            Method methodGetX = pd.getReadMethod();
            reValue = methodGetX.invoke(pt1);
            break;
        }
    }
    return reValue;
} 

이 두 종류의 비교를 통해 알 수 있듯이 모두PropertyDescriptor를 얻어야 한다. 그러나 방식은 다르다. 전자는 창설 대상을 통해 직접 얻고 후자는 두루 훑어보아야 하기 때문에PropertyDescriptor 클래스를 사용하는 것이 더욱 편리하다.
 
BeanUtils 키트
JavaBean에 더 많은 편리한 기능을 제공합니다.
beanutils.jar = beanutils-core.jar + beanutils-bean-collections.jar, BuildPath를 통해 추가 jar 패키지를 추가하거나, 프로젝트에서lib 디렉터리를 만들어서 jar 패키지를 복사해서 이 jar 패키지를 불러올 수 있습니다. 오른쪽 단추 - add to BuildPath.사용 시 가이드 패키지 필요: org.apache.commons.beanutils.BeanUtils.
acpche에서 제공하는 로그 패키지: logging을 사용해야 합니다.
속성의 값을 얻습니다. 예를 들어, BeanUtils.getProperty(pt1, "x"), 문자열 반환
속성의 값을 설정합니다. 예를 들어, BeanUtils.setProperty(pt1, y, 22), 매개 변수는 문자열이나 기본 형식이 자동으로 포장됩니다.속성을 설정하는 값은 문자열이고, 얻은 값도 문자열이며, 기본 형식이 아닙니다.
BeanUtils의 특징:
1. 기본 데이터 유형의 속성에 대한 조작: WEB에서 개발, 사용, 입력과 표시를 할 때 값은 문자열로 변환되지만 밑바닥 연산은 기본 형식으로 사용되며 이러한 유형의 전환 동작은 BeanUtils가 자동으로 완성한다.
2. 인용 데이터 형식의 속성에 대한 작업: 먼저 클래스에 대상이 있어야 하며 null이 되어서는 안 된다. 예를 들어private Date birthday=new Date().작업은 전체 객체가 아닌 객체의 속성입니다. 예를 들어, BeanUtils.setProperty (pt1,"birthday.time",121);
Java7의 새로운 기능: 맵과 JavaBean 사이를 서로 변환할 수 있습니다. 키는 속성이고,value는 값입니다.
describe:JavaBean—>Map;populate:Map—>JavaBean.예를 들면 다음과 같습니다.
Map map = (name:Kim,age:18);
BeanUtils.setProperty(map,"name","Kim");
copyProperties(Object desc, Object orig): 한 객체의 등록 정보 값을 다른 객체의 등록 정보로 복사하려면 일관된 등록 정보가 필요합니다.
 
PropertyUtils 클래스
BeanUtils와 달리 getProperty, setProperty 작업을 실행할 때 형식 변환이 없고 속성의 원래 형식이나 포장 클래스를 사용합니다.
 
 
구체적인 사용은 블로그Spring 속성 주입 시뮬레이션 참조
 

좋은 웹페이지 즐겨찾기