스프링 학습 노트 - CustomEditor Configurer

9825 단어 spring직장레저
자바 빈 API 에 서 는 이러한 인 터 페 이 스 를 제공 합 니 다. 자바 빈 스. Property Editor. 이 인 터 페 이 스 는 문자열 값 (String 형식) 을 비 String 형식 으로 표시 하 는 방법 을 제공 합 니 다.그것 이 바로 전설의 속성 편집기 입 니 다.이 인 터 페 이 스 를 통 해 사용 자 는 사용자 정의 속성 편집 기 를 작성 하여 spring 설정 파일 의 문자열 을 해당 하 는 대상 으로 변환 하여 주입 할 수 있 습 니 다.
    그러나 이 인 터 페 이 스 는 12 가지 방법 이 있 습 니 다. 사용자 가 이 인 터 페 이 스 를 실현 하려 면 사용자 정의 속성 편집 기 를 만 드 는 것 이 번 거 로 울 수 있 습 니 다.다행히도 이 인터페이스의 실현 클래스 가 있 습 니 다. java. beans. Property Editor Support, 우 리 는 이 실현 클래스 를 계승 하여 setAsText (String value) 방법 을 덮어 쓰 고 사용자 정의 속성 편집 기 를 실현 할 수 있 습 니 다.
    사용자 정의 편집기 의 몇 가지 절 차 를 사용 합 니 다:
(1) Property Editor Support 클래스 를 계승 하여 setAsText (String value) 방법 을 덮어 씁 니 다. 이 방법 은 하나의 문자열 을 통 해 대상 을 구성 합 니 다. 일반적으로 이 방법 에서 문자열 을 분석 하고 하나의 대상 object (어떤 대상 을 구성 하 는 지 는 주입 할 속성 이 어떤 유형 인지 봐 야 합 니 다) 를 구성 하 며 setValue (object) 를 호출 하여 속성 대상 설정 작업 을 완성 합 니 다.
(2) spring 프로필 에 이 속성 편집 기 를 등록 합 니 다.
예:
하나의 User 클래스, 두 가지 속성 이 있 습 니 다: name (String 형식);address (주소 유형)
User.java

  
  
  
  
  1. public class User { 
  2.     private String name; 
  3.     private Address address; 
  4.     // getters and setters 
  5.     public getName() { 
  6.         return name; 
  7.     } 
  8.     public void setName(String name) { 
  9.         this.name = name; 
  10.     } 
  11.     public getAddress() { 
  12.         return address; 
  13.     } 
  14.     public void setAddress(Address address) { 
  15.         this.address = address; 
  16.     } 

Address.java

  
  
  
  
  1. public class Address { 
  2.     public String streetName; 
  3.     public String doorNum; 
  4.     // getters and setters  

AddressPropertyEditor.java

  
  
  
  
  1. public class AddressPropertyEditor extends PropertyEditorSupport { 
  2.     public void setAsText(String text) { 
  3.         if (text == null || text.equals("")) {    
  4.             throw new IllegalArgumentException("text can't be null or empty");    
  5.         } else {    
  6.             String[] strArr = StringUtils.tokenizeToStringArray(text,",");    
  7.             Address add = new Address();    
  8.             add.setStreetName(strArr[0]);    
  9.             add.setDoorNum(strArr[1]);   
  10.             setValue(add);    
  11.         }    
  12.     }    
  13.         
  14.     public String getAsText() {    
  15.         Address add = (Address)getValue();    
  16.         return "" + add;    
  17.     }    
  18. }    

spring 프로필 에 추가:

  
  
  
  
  1. <bean id="customEditorConfigurer"  class="org.springframework.beans.factory.config.CustomEditorConfigurer">    
  2.   <property name="customEditors">    
  3.     <map>    
  4.       <entry key="org.itec.elwg.entity.Address"> <!--   -->    
  5.         <bean class="org.itec.elwg.customeditor.AddressPropertyEditor"/> <!-- Address  -->    
  6.       </entry>    
  7.     </map>    
  8.   </property>    
  9. </bean>    
  10.    
  11.  <bean id="user" class="org.itec.elwg.entity.User">    
  12.     <property name="name" value=" "/>    
  13.     <property name="address" value=" ,1037"/>    
  14.  </bean> 

CustomEditor Configurer 클래스 는 Address 속성 을 AddrProperty Editor 속성 편집기 와 연결 합 니 다. user 에 address 형식의 address 속성 을 주입 할 때 spring 은 address Property Editor 를 사용 하여 "로 유 로, 1037" 문자열 의 값 을 address 대상 으로 변환 하여 address 에 지불 합 니 다.

좋은 웹페이지 즐겨찾기