스프링 구성 파일에서는 종종 문자 그럴 값을 통해 다양한 유형의 Bean 값을 설정 하며이 기능은 속성 편집기를 통해 구현됩니다.
java.beans.propertyeditor 인터페이스를 구현하는 모든 클래스는 속성 편집기입니다. JVM 내부의 해당 유형으로 설정할 외부 값을 변환 할 수 있으므로 속성 편집기는 실제로 유형 변환기입니다.
1 Javabean 편집자
Sun이 개발 한 Javabean 편집자는 대부분 IDE를 위해 준비되었습니다. IDE가 Javabeans의 특성을 시각적으로 설정할 수 있습니다.
Java는 java.beans.propertyeditor를 통해 Javabean 속성을 설정하는 방법을 정의합니다. BeanInfo를 통해 Javabean의 속성이 사용자 정의 할 수 있습니다. 또한 사용자 정의 가능한 속성과 Property Editor 간의 서신을 설명합니다.
Beaninfo와 Javabean 사이의 대응은 둘 사이의 표준의 명명을 통해 확립됩니다. Javabean에 해당하는 Beaninfo는 다음과 같은 이름 지정 사양을 채택합니다. 예를 들어, BookBean에 해당하는 BeanInfo는 BookBeanBeanInfo입니다. Javabean이 속성 편집기와 함께 IDE에 등록되면 Javabean이 개발 인터페이스에서 사용자 정의 될 때 IDE는 Javabean 사양에 따라 해당 BeanInfo를 찾은 다음 Javabean 속성 설명 (유적 편집자가 사용되는 등)을 찾은 다음 Javabean의 특정 개발에 대한 특정 개발을 생성합니다.
Java는 기본 속성 편집자 : PropertyEditorManager를 관리하는 관리자를 제공합니다. Javabean의 공통 유형 속성이 BeanInfo를 통해 속성 편집기를 명시 적으로 지정하지 않으면 IDE는 PropertyEditorManager에 등록 된 해당 속성에 대한 기본 편집기를 자동으로 사용합니다.
1.1 PropertyEditor
PropertyEditor는 외부 세트 값을 내부 Javabean 속성 값으로 변환하는 인터페이스 메소드를 정의하는 속성 편집기 인터페이스입니다. 주요 인터페이스 방법은 다음과 같이 설명됩니다.
| 방법 | 설명 |
|---|---|
| 개체 getValue () | 속성의 현재 값을 반환하면 기본 유형이 해당 래퍼 유형에 캡슐화됩니다. |
| void setValue (Object NewValue) | 속성의 값을 설정하면 기본 유형이 래퍼 유형으로 전달됩니다. |
| String getTasext () | 외부 속성 편집기가 시각적으로 표시 할 수 있도록 문자열을 사용하여 속성 객체를 나타냅니다. 기본적으로 NULL을 반환하여 속성을 문자열로 표시 할 수 없음을 나타냅니다. |
| void settasext (문자열 텍스트) | 문자열을 사용하여 일반적으로 외부 속성 편집기에서 전달되는 속성의 내부 값을 업데이트하십시오. |
| 문자열 [] getTags () | 속성 편집기가 다음 방식으로 표시 할 수 있도록 유효한 속성 값을 나타내는 문자열 배열을 반환합니다. 기본적으로 null을 반환합니다. |
| 문자열 getJavainitializationstring () | 속성 편집기가 속성의 기본값으로 사용하는 속성의 초기 값을 제공합니다. |
PropertyEditor 인터페이스는 내부 속성 값과 외부 설정 값 간의 통신 브리지입니다.
Java는 PropertyEditor : PropertyEditorsupport에 대한 편리한 구현 클래스를 제공합니다. 이 클래스를 확장하여 자체 속성 편집기를 설계 할 수 있습니다.
1.2 Bean 속성 설명 (BeanInfo)
BeanInfo는 Javabean의 편집 가능한 속성과 해당 속성 편집기에 대해 설명합니다. 각 속성은 속성 설명자 PropertyDescriptor에 해당합니다.
PropertyDescriptor의 생성자에는 PropertyDescriptor (String PropertyName, Class BeanClass)의 두 가지 매개 변수가 있습니다. 여기서 PropertyName은 속성 이름입니다. Beanclass는 Javabean에 해당하는 클래스입니다.
PropertyDescriptor에는 SetPropertyEditorClass (Class PropertyEditorClass) 메소드가 있으며 Javabean Properties의 편집기를 지정합니다.
BeanInfo 인터페이스에서 가장 중요한 방법은 다음과 같습니다. PropertyDescriptor [] getPropertyDescriptors ()는 Javabean 속성 디스크립터 어레이를 반환합니다.
BeanInfo 인터페이스에 일반적으로 사용되는 구현 클래스는 SimpleBeanInfo로,이 클래스를 확장하여 사용자 정의 기능을 구현할 수 있습니다.
2 스프링 기본 속성 편집기
Spring의 Property Editor는 IDE 개발을위한 전통적인 속성 편집기와 다릅니다. UI 인터페이스가 없으며 구성 파일의 텍스트 구성 값을 Bean 속성의 해당 값으로 변환합니다.
Spring은 PropertyEditorregistrySupport의 공통 속성 유형에 대한 기본 속성 편집기를 제공하며, 이는 3 개의 주요 범주로 나뉘며 총 32 개입니다.
| 유형 | 설명 |
|---|---|
| 기본 데이터 유형 | [1] : Boolean, Int 등과 같은 기본 데이터 유형; [2] 기본 데이터 유형 캡슐화 클래스, 예 : 부울, 정수 등; [3] 기본 데이터 유형 배열 : char [] 및 바이트 []; [4] 다수 : Bigdecimal 및 Biginteger. |
| 컬렉션 클래스 | 수집, 세트, SortedSet, List 및 SortedMap. |
| 자원 | 클래스, 클래스 [], 파일, 입력 스트림, 로케일, 속성, 자원 [] 및 URL. |
PropertyEditorregistrySupport에는 속성 편집기를 저장하는 두 가지 맵 유형 변수가 있습니다.
| 변수 이름 | 설명 |
|---|---|
| 기본 편집자 | 기본 속성 유형을 저장하는 편집기, 요소의 키는 속성 유형이고 값은 해당 속성 편집기 인스턴스입니다. |
| 맞춤형 | 사용자 정의 속성 편집기 저장 요소의 주요 값은 기본 조정기와 동일합니다. |
3 맞춤형 스프링 속성 편집기
응용 프로그램이 특수 유형의 속성을 정의하고 구성 파일에서 문자 그대로 속성 값을 구성하려면 사용자 정의 속성 편집기를 작성하여 스프링 컨테이너에 등록하여 구현할 수 있습니다.
대부분의 스프링 기본 속성 편집자는 java.beans.propertyeditorsupport에서 확장됩니다. PropertyEditorSupport를 확장하여 속성 편집기를 사용자 정의 할 수 있습니다. 스프링 환경에서는 구성 파일의 문자 그대로 값을 속성 유형의 객체로 변환하면 UI 인터페이스를 제공 할 필요가 없으므로 SettaseExt () PropertyEditorsupport (∩_∩) 메소드 O HAHA ~를 무시하면됩니다.
두 개의 엔티티 북과 저자가 있다고 가정하고 책을 구성 할 때 저자 이름을 직접 설정할 수 있기를 바랍니다.
BOOK.java
공개 수업 책 { / *** 저자* / 개인 저자; / *** 책 제목*/ 개인 문자열 이름; // get/setter method를 생략}저자 Java
공개 클래스 저자 {개인 문자열 이름; // get/setter method를 생략}먼저 저자의 속성 편집기를 사용자 정의하십시오.
공개 클래스 CustomPropertyEditor는 PropertyEditorSupport를 확장합니다. {@Override public void settasext (문자열 텍스트)는 불법 행위를 던진다. (text == null || text.length () == 0) {Throw New New ElegalArgumentException ( "Format Error"); } 저자 저자 = 새 저자 (); author.setName (텍스트); // 상위 클래스의 메소드를 호출하여 setValue (저자); }} BeanFactory를 사용하는 경우 Custom Property 편집기를 등록하려면 registerCustomEditor(Class requiredType, PropertyEditor propertyEditor) 메소드 메소드를 수동으로 호출해야합니다. ApplicationContext를 사용하는 경우 구성 파일에 CustomEDitorConfigurer 만 등록하면됩니다. CustomEDitorConfigurer는 BeanFactoryPostProcessor 인터페이스를 구현하므로 Bean의 공장 후 프로세서입니다.
이제 사용자 정의 속성 편집기를 등록하십시오.
<!-커스텀 속성 편집기 등록-> <ean> <속성 이름 = "CommunitedOrs"> <map> <!-키 : 속성 유형; 값 : 속성 편집기-> <Entry key = "net.deniro.spring4.editor.author"value = "net.deniro.spring4.editor.customPropertyEditor"/> </map> </property> </bean> <bean id = "book"> <property name = "value ="kafka by the Sea "/> <! value = "Haruki Murakami"/> </bean>
책의 저자 속성을 설정할 때 Custom Property Editor Registry가 검색됩니다. 저자 속성 유형에 해당하는 속성 편집자 CustomPropertyEditor가 발견되면 "Haruki Murakami"를 저자 객체로 변환합니다.
이 사양에 따르면 Java는 <JavaBean>Editor 의 수업이 Javabean의 동일한 클래스 패키지에 존재하는지 여부를 찾을 것입니다. 존재하면 <JavaBean>Editor Javabean의 속성 편집기로 자동으로 사용합니다. Spring은 또한이 사양을 지원합니다.
따라서 클래스 패키지 아래에 auderoreditor라는 속성 편집기 클래스가있는 경우 구성 파일 O (∩__)에 사용자 정의 속성 편집기를 등록 할 필요가 없습니다. o haha ~.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.