Spring 속성 편집기 사용

Spring 설정 파일 에서,우 리 는 종종 글자 값 을 통 해 Bean 의 각종 유형의 속성 값 을 설정 합 니 다.이 기능 은 속성 편집 기 를 통 해 이 루어 집 니 다.
자바.beans.Property Editor 인 터 페 이 스 를 실현 한 모든 종 류 는 속성 편집기 입 니 다.외부 에서 설정 해 야 할 값 을 JVM 내부 의 대응 형식 으로 변환 할 수 있 기 때문에 속성 편집 기 는 사실상 형식 변환기 입 니 다.
1 JavaBean 편집기
Sun 이 만 든 자바 빈 편집 기 는 대부분 IDE 를 위 한 것 입 니 다.IDE 가 자바 빈 의 속성 을 시각 적 으로 설정 할 수 있 도록 합 니 다.
자바 는 자바.beans.Property Editor 를 통 해 자바 빈 속성 을 설정 하 는 방법 을 정 의 했 고,BeanInfo 를 통 해 자바 빈 의 어떤 속성 이 맞 춤 형 인지 설명 하 였 으 며,맞 춤 형 속성 과 Property Editor 간 의 대응 관 계 를 묘사 하 였 다.
BeanInfo 와 JavaBean 간 의 대응 관 계 는 양자 간 규범 의 명명 을 통 해 확립 되 고 JavaBean 에 대응 하 는 BeanInfo 는 다음 과 같은 명명 규범 을 사용한다.BeanInfo.예 를 들 어 Bookbean 에 대응 하 는 BeanInfo 는 Bookbean BeanInfo 입 니 다.자바 빈 이 속성 편집기 와 함께 IDE 에 등록 하면 개발 인터페이스 에서 자바 빈 을 맞 춤 형 으로 만 들 때 IDE 는 자바 빈 규범 에 따라 해당 하 는 BeanInfo 를 찾 은 다음 에 BeanInfo 의 설명 정보 에 따라 자바 빈 속성 설명(어떤 속성 편집기 등 을 사용 하 는 지)을 찾 아 자바 빈 에 특정 개발 편집 인터페이스 를 생 성 한다.
자바 에 서 는 기본 속성 편집 기 를 관리 하 는 관리 자 를 제공 합 니 다.Property Editor Manager 는 일반적인 유형의 속성 편집 기 를 저장 하고 있 습 니 다.만약 자바 빈 의 일반적인 형식 속성 이 BeanInfo 를 통 해 속성 편집 기 를 명시 적 으로 지정 하지 않 으 면 IDE 는 Property Editor Manager 에 등 록 된 해당 속성 에 대한 기본 편집 기 를 자동 으로 사용 합 니 다.
1.1 속성 편집기(PropertyEditor)
PropertyEditor 는 속성 편집기 인터페이스 로 외부 설정 값 을 내부 자바 빈 속성 값 으로 변환 하 는 인터페이스 방법 을 정의 합 니 다.주요 인터페이스 방법 은 다음 과 같다.
방법.
설명 하 다.
Object getValue()
속성의 현재 값 을 되 돌려 줍 니 다.기본 형식 은 해당 하 는 포장 유형 으로 봉 인 됩 니 다.
void setValue(Object newValue)
속성의 값 을 설정 하고 기본 형식 은 포장 형식 으로 들 어 옵 니 다.
String getAsText()
외부 속성 편집기 가 시각 적 으로 표시 할 수 있 도록 속성 대상 을 문자열 로 표시 합 니 다.기본적으로 null 을 되 돌려 줍 니 다.이 속성 은 문자열 로 표시 할 수 없습니다.
void setAsText(String text)
속성 내부 값 을 문자열 로 업데이트 합 니 다.외부 속성 편집기 에서 들 어 옵 니 다.
String[] getTags()
속성 편집기 가 아래 상 자 를 당 길 수 있 도록 유효한 속성 값 을 표시 하 는 문자열 그룹 을 되 돌려 줍 니 다.기본적으로 null 로 돌아 갑 니 다.
String getJavaInitializationString()
속성 에 초기 값 을 제공 합 니 다.속성 편집 기 는 이 값 을 속성의 기본 값 으로 합 니 다.
Property Editor 인 터 페 이 스 는 내부 속성 값 과 외부 설정 값 의 소통 교량 입 니 다.
자바 는 Property Editor 에 편리 한 실현 클래스 를 제공 합 니 다.Property Editor Support,이 클래스 는 Property Editor 인 터 페 이 스 를 실현 합 니 다.우 리 는 이 클래스 를 확장 하여 자신의 속성 편집 기 를 설계 할 수 있 습 니 다.
1.2 Bean 속성 설명(BeanInfo)
BeanInfo 는 자바 빈 의 편집 가능 한 속성 과 대응 하 는 속성 편집 기 를 묘 사 했 습 니 다.각 속성 은 하나의 속성 설명 기 Property Descriptor 에 대응 합 니 다.
Property Descriptor 의 구조 함 수 는 두 개의 입 참 이 있 습 니 다.Property Descriptor(String property Name,Class beanClass)는 속성 명 입 니 다.beanClass 는 자바 빈 에 대응 하 는 Class 입 니 다.
Property Descriptor 는 자바 빈 속성 에 편집 기 를 지정 할 수 있 는 setProperty Editor Class(Class property Editor Class)방법 도 있 습 니 다.
BeanInfo 인터페이스 에서 가장 중요 한 방법 은 Property Descriptor[]getProperty Descriptors()입 니 다.자바 빈 의 속성 설명 기 배열 을 되 돌려 줍 니 다.
BeanInfo 인터페이스의 자주 사용 되 는 실현 클래스 는 Simple BeanInfo 입 니 다.우 리 는 이 종 류 를 확장 하여 사용자 정의 기능 을 실현 할 수 있 습 니 다.
2 Spring 기본 속성 편집기
Spring 의 속성 편집 기 는 IDE 개발 에 사용 되 는 기 존의 속성 편집기 와 달리 UI 인터페이스 가 없고 설정 파일 의 텍스트 설정 값 을 Bean 속성의 대응 값 으로 변환 합 니 다.
Spring 은 Property Editor Registry Support 에서 흔히 볼 수 있 는 속성 유형 에 기본 속성 편집 기 를 제공 합 니 다.3 가지 유형 으로 나 뉘 는데 모두 32 개 입 니 다.
유형
설명 하 다.
기본 데이터 형식
【1】기본 데이터 형식,예 를 들 어 boolean,int 등;【2]기본 데이터 형식 패 키 징 류,예 를 들 어 Boolean,Integer 등;[3]기본 데이터 형식 배열:char[]와 by te[];[4]대수:BigDecimal 과 BigInteger.
집합 류
Collection,Set,Sorted Set,List,Sorted Map.
자원 류
Class,Class[],File,InputStream,Locale,Properties,Resource[]와 URL.
Property Editor Registry Support 에는 속성 편집 기 를 저장 하 는 맵 형식 변수 가 두 개 있 습 니 다.
변수 이름
설명 하 다.
defaultEditors
기본 속성 형식의 편집 기 를 저장 합 니 다.요소 의 키 는 속성 형식 이 고 값 은 해당 하 는 속성 편집기 인 스 턴 스 입 니 다.
customEditors
사용자 정의 속성 편집 기 를 저장 합 니 다.요소 의 키 값 은 defaultEditors 와 같 습 니 다.
3 사용자 정의 Spring 속성 편집기
만약 우리 의 응용 프로그램 이 특수 한 형식의 속성 을 정의 하고 설정 파일 에서 글자 액면가 방식 으로 속성 값 을 설정 하 기 를 원한 다 면 사용자 정의 속성 편집 기 를 작성 하여 Spring 용기 에 등록 하 는 방식 으로 이 루어 질 수 있 습 니 다.
Spring 의 기본 속성 편집 기 는 대부분 java.beans.Property Editor Support 에서 확 장 됩 니 다.속성 편집 기 를 정의 하 는 데 서 Property Editor Support 를 확장 할 수 있 습 니 다.Spring 환경 에서 설정 파일 의 글자 값 을 속성 형식의 대상 으로 변환 하면 됩 니 다.UI 인터페이스 를 제공 할 필요 가 없 기 때문에 Property Editor Support 의 setAsText()방법 만 덮어 쓰 면 됩 니 다.(∩∩)오 하하~.
만약 에 저희 가 두 개의 실체 Book 과 Author 가 있다 고 가정 하면 Book 을 설정 할 때 Author 의 이름 을 직접 설정 할 수 있 습 니 다.
Book.java

public class Book {
 /**
  *   
  */
 private Author author;
 /**
  *   
  */
 private String name;
 //   get/setter   
}

Author.java

public class Author {
 private String name;
 //   get/setter   
}

우선,author 의 속성 편집기 사용자 정의:

public class CustomPropertyEditor extends PropertyEditorSupport {
 @Override
 public void setAsText(String text) throws IllegalArgumentException {
  if(text==null||text.length()==0){
   throw new IllegalArgumentException("    ");
  }
  Author author=new Author();
  author.setName(text);
  //       ,       
  setValue(author);
 }
}
BeanFactory 를 사용 하려 면 수 동 호출 registerCustomEditor(Class requiredType, PropertyEditor propertyEditor) 방법 으로 사용자 정의 속성 편집 기 를 등록 해 야 합 니 다.응용 프로그램 Context 를 사용한다 면 설정 파일 에 CustomEditor Configure 를 등록 하면 됩 니 다.CustomEditor Configurer 는 Bean Factory PostProcessor 인 터 페 이 스 를 실현 하기 때문에 Bean 의 공장 후 프로세서 입 니 다.
현재 사용자 정의 속성 편집기 등록:

<!--            -->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
 <property name="customEditors">
  <map>
   <!-- key:    ;value:     -->
   <entry key="net.deniro.spring4.editor.Author"
     value="net.deniro.spring4.editor.CustomPropertyEditor"
     />
  </map>
 </property>
</bean>

<bean id="book" class="net.deniro.spring4.editor.Book">
 <property name="name" value="      "/>
 <!--                -->
 <property name="author" value="    "/>
</bean>

BeanWrapper 는 북 의 author 속성 을 설정 할 때 사용자 정의 속성 편집기 레 지 스 트 를 검색 합 니 다.author 속성 형식 에 대응 하 는 속성 편집기 CustomProperty Editor 를 발견 하면 이 맞 춤 형 속성 편집기 가'마을 봄 나무'를 Author 대상 으로 변환 합 니 다.
규범 에 따라 자바 는 자바 빈 의 같은 가방 에서 존재 하 는 지 <JavaBean>Editor의 종 류 를 찾 습 니 다.존재 하면 이 자바 빈 의 속성 편집기 로 자동 으로<JavaBean>Editor사 용 됩 니 다.Spring 도 이 규범 을 지지한다.
따라서 패키지 아래 에 AuthorEditor 속성 편집기 클래스 가 있다 면 설정 파일 에 사용자 정의 속성 편집 기 를 등록 할 필요 가 없습니다.O(∩∩)하하~
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기