В файлах конфигурации пружины мы часто устанавливаем различные типы значений свойств бобов посредством буквальных значений, и эта функция реализована через редактор свойств.
Любой класс, который реализует интерфейс Java.beans.propertyeditor, является редактором свойств. Он может преобразовать внешнее значение, которое будет установлено в соответствующий тип внутри JVM, поэтому редактор свойств на самом деле является преобразователем типа.
1 Javabean Editor
Редактор Javabean, разработанный Sun, в значительной степени подготовлен для IDE. Это позволяет IDE устанавливать свойства джабейцев визуально.
Java определяет метод установки Javabean Properties через java.beans.propertyeditor. Через Beaninfo описывается, какие свойства Javabean настраиваются. Кроме того, он также описывает соответствие между настраиваемыми свойствами и PropertyDitor.
Переписка между Beaninfo и Javabean устанавливается посредством именования нормы между ними. Beaninfo, соответствующий Javabean, принимает следующую спецификацию именования: <Bean> Beaninfo. Например, Beaninfo, соответствующий книжному бубку, является книжным бубаминфо. Когда Javabean зарегистрировано в IDE вместе с редактором атрибутов, когда Javabean настроен на границе разработки, IDE найдет соответствующий BeanInfo в соответствии с спецификацией Javabean, а затем найдет описание атрибута Javabean (который используется атрибутом и т. Д.) На основе описания информации в Beaninfo, а затем Generate Edting Edting eDabian.
Java предоставляет менеджера по управлению редакторами недвижимости по умолчанию: PropertyTormanager, который имеет некоторые общие типы редакторов недвижимости. Если в своем свойстве общего типа Javabean явно не указано его редактор свойств через Beaninfo, IDE автоматически будет использовать редактор по умолчанию для соответствующих свойств, зарегистрированных в PropertyTormanager.
1.1 PropertyDitor
PropertyDitor - это интерфейс редактора свойств, который определяет метод интерфейса, который преобразует внешние значения установки во внутренние значения свойств Javabean. Основные методы интерфейса объясняются следующим образом:
| метод | иллюстрировать |
|---|---|
| Object getValue () | Возвращает текущее значение атрибута, базовый тип инкапсулируется в соответствующий тип обертки |
| void setValue (Object NewValue) | Установите значение атрибута, основной тип передается как тип обертки |
| String getaStxt () | Используйте строки, чтобы представлять объекты атрибута, чтобы редакторы внешнего атрибута могли отображать их визуально. Возвращает NULL по умолчанию, указывая, что свойство не может быть представлено как строка. |
| void setaStext (строка текст) | Используйте строку, чтобы обновить внутреннее значение свойства, которое обычно передается из редактора внешнего свойства. |
| String [] getTags () | Возвращает массив строк, представляющих допустимые значения атрибутов, чтобы редактор атрибутов мог отобразить его следующим образом. Возвращает NULL по умолчанию. |
| String getJavainitializationString () | Предоставляет начальное значение для свойства, которое редактор свойств использует в качестве значения по умолчанию для свойства. |
Интерфейс PropertyDitor - это мост связи между значениями внутренних свойств и значениями внешних настроек.
Java предоставляет удобный класс внедрения для PropertyDitor: PropertyDitorSupport, который реализует интерфейс PropertyDitor. Мы можем спроектировать наш собственный редактор недвижимости, расширив этот класс.
1.2 Описание атрибута фасоли (Beaninfo)
Beaninfo описывает редактируемые свойства на Javabean и соответствующий редактор свойств, каждое свойство соответствует свойству дескриптора свойства.
Конструктор PropertyDescriptor имеет два параметра: PropertyDescriptor (String PropertyName, Class Beanclass), где PropertyName - это имя свойства; Beanclass - это класс, соответствующий Javabean.
PropertyDescriptor также имеет метод SetPropertyEditorClass (Class PropertyTitorClass), который определяет редактор для Javabean Properties.
Наиболее важным методом в интерфейсе Beaninfo является: PropertyDescriptor [] getPropertyDescriptors (), который вернет массив дескрипторов свойства Javabean.
Обычно используемым классом реализации для интерфейса Beaninfo является Simplebeaninfo, который мы можем реализовать настраиваемые функции, расширяя этот класс.
2 Редактор недвижимости по умолчанию весной
Редактор недвижимости Spring отличается от традиционного редактора недвижимости для разработки IDE. Он не имеет интерфейса пользовательского интерфейса и просто преобразует значение текстовой конфигурации в файле конфигурации в соответствующее значение свойства Bean.
Spring предоставляет редактор недвижимости по умолчанию для общих типов недвижимости в PropertyDitorErgistryprypport, который разделен на 3 основных категории, в общей сложности 32:
| тип | иллюстрировать |
|---|---|
| Основные типы данных | [1] Основные типы данных, такие как: Boolean, Int и т. Д.; [2] Основные классы инкапсуляции типа данных, такие как: Boolean, Integer и т. Д.; [3] Основные массивы типа данных: char [] и byte []; [4] Большое количество: BigDecimal и BigInteger. |
| Класс коллекции | Коллекция, набор, сортировка, список и сортировку. |
| Ресурсы | Класс, класс [], файл, входные сечения, локаль, свойства, ресурс [] и URL. |
Есть две переменные типа карты в PropertyDitorErerGistrySupport, которые сохраняют редакторы свойств:
| Имя переменной | иллюстрировать |
|---|---|
| Дефолтиторы | Редактор, который сохраняет тип атрибута по умолчанию, ключом элемента является тип атрибута, а значение является соответствующим экземпляром редактора атрибутов. |
| Customeditors | Сохранить пользовательские редакторы атрибутов, ключевые значения элементов такие же, как дефолтиторы. |
3 Редактор на пользовательских весенних свойств
Если наше приложение определяет специальный тип атрибута и хочет буквально настроить значение атрибута в файле конфигурации, то мы можем написать пользовательский редактор атрибутов и зарегистрировать его в контейнере Spring для его реализации.
Большинство редакторов недвижимости весны по умолчанию простираются от java.beans.propertyeditorsupport. Мы можем настроить редактор недвижимости, расширив PropertyEditorSupport. В весенней среде вам нужно только преобразовать буквальное значение в файле конфигурации в объект типа свойства, и вам не нужно предоставлять интерфейс пользовательского интерфейса, поэтому вам необходимо только переопределять метод setaStxt () PropertyEditorSupport (∩_∩) o Ха -ха ~.
Предположим, у нас есть две юридические книги и автор, и мы надеемся, что при настройке книги мы сможем напрямую установить имя автора.
Book.java
открытый класс книга { / *** Автор* / Частный автор автор; / *** Название книги*/ private String name; // Опустите метод get/setter}Автор. Ява
Автор открытого класса {частное название строки; // Опустите метод get/setter}Во -первых, настроить редактор имущества автора:
открытый класс CustomPropertyEditor Extends PropertyEditorSupport {@Override public void setaStxt (String Text) Throws allosalArgumentException {if (text == null || text.length () == 0) {throw new allogalArgumentException ("ошибка формата"); } Автор автор = новый автор (); Author.SetName (Text); // Вызовите метод родительского класса в setValue (автор); }} Если вы используете BeanFactory, вам необходимо вручную позвонить в метод registerCustomEditor(Class requiredType, PropertyEditor propertyEditor) чтобы зарегистрировать пользовательский редактор свойств; Если вы используете ApplicationContext, вам нужно только зарегистрировать CustomEditorConfigurer в файле конфигурации. CustomEditorConfigurer реализует интерфейс BeanFactoryPostProcessor, так что это фабричный постпроцессор для бобов.
Теперь зарегистрируйте пользовательский редактор свойств:
<!-Зарегистрировать пользовательский редактор свойств-> <Bean> <name = "customeditors"> <Map> <!-Ключ: Тип свойства; Значение: Редактор свойств-> <inpit key = "net.deniro.spring4.editor.author" value = "net.deniro.spring4.editor.custompropertyeditor"/> </map> </property> </bean> <bean id = "Книга"> <pertive = "name" value = "kafka с помощью море"/> <! name = "Автор" value = "haruki murakami"/> </bean>
При настройке имущества автора книги будет извлечен реестр редакторов недвижимости. Когда редактор недвижимости CustomPropertyEditor, соответствующий типу автора, будет найдено, он преобразует «Харуки Мураками» в объект автора.
Согласно спецификации, Java будет искать, существует ли класс <JavaBean>Editor в том же классе Javabean; Если он существует, он автоматически использует <JavaBean>Editor в качестве редактора свойств Javabean. Весна также поддерживает эту спецификацию.
Таким образом, если в пакете класса есть класс редактора свойств Authoreditor, то нет необходимости регистрировать пользовательский редактор свойств в файле конфигурации o (∩_∩) o ха -ха ~
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.