In Frühlingskonfigurationsdateien setzen wir häufig verschiedene Arten von Eigenschaftswerten von Bean durch buchstäbliche Werte, und diese Funktion wird über den Eigenschaftseditor implementiert.
Jede Klasse, die die Schnittstelle von Java.beans.PropertyEditor implementiert, ist ein Eigenschaftseditor. Es kann den externen Wert konvertieren, der auf den entsprechenden Typ innerhalb des JVM eingestellt werden soll, sodass der Eigenschaftseditor tatsächlich ein Typkonverter ist.
1 JavaBean Editor
Der von Sun entwickelte Javabäe -Redakteur ist größtenteils auf die IDE vorbereitet. Es ermöglicht die IDE, die Eigenschaften der JavaBeans visuell festzulegen.
Java definiert die Methode, javabäische Eigenschaften durch Java.beans.PropertyEditor festzulegen. Durch BeanInfo beschreibt es, welche Eigenschaften von Javabäen anpassbar sind. Darüber hinaus beschreibt es auch die Korrespondenz zwischen anpassbaren Eigenschaften und Eigenschaften.
Die Korrespondenz zwischen BeanInfo und Javaboan wird durch die Benennung der Norm zwischen beiden festgelegt. Der Beaninfo, der Javabäen entspricht, nimmt die folgende Namensspezifikation an: <Bean> BeanInfo. Zum Beispiel ist der Beaninfo, der BookBean entspricht, bookBeanInfo. Wenn ein Javabäer zusammen mit seinem Attributeditor bei der IDE registriert ist, wird die IDE die entsprechende Beaninfo gemäß der Javabä -Spezifikation findet, wenn die Javabean in der Entwicklungsschnittstelle angepasst wird, und dann die Javaboan -Attributbeschreibung (die auf der Brecess -Information in der Beschreibung des BEANNINFO basierenden Attributbeschreibungen (die zu einem bestimmten Attributeditor usw.) basiert.
Java bietet einem Manager für die Verwaltung von Standard -Eigenschaftsredakteuren: PropertyEditorManager, die einige gemeinsame Arten von Eigenschaftenredakteuren besitzt. Wenn die Common -Eigenschaft eines Javabeins seinen Eigenschaftseditor nicht ausdrücklich über BeanInfo angibt, verwendet die IDE den Standard -Editor automatisch für die entsprechenden Eigenschaften, die in PropertyEditormanager registriert sind.
1.1 PropertyeDitor
PropertyEditor ist die Eigenschaftseditor -Schnittstelle, die eine Schnittstellenmethode definiert, die externe Mengenwerte in interne JavaBean -Eigenschaftswerte umwandelt. Die Hauptschnittstellenmethoden werden wie folgt erklärt:
| Verfahren | veranschaulichen |
|---|---|
| Objekt getValue () | Gibt den aktuellen Wert des Attributs zurück. Der Basistyp wird in den entsprechenden Wrapper -Typ eingekapselt |
| void setValue (Objekt NewValue) | Legen Sie den Wert des Attributs fest, der Grundtyp wird als Wrapper -Typ übergeben |
| String Getastext () | Verwenden Sie Zeichenfolgen, um Attributobjekte darzustellen, damit externe Attributeditoren sie visuell anzeigen können. Gibt null standardmäßig zurück und gibt an, dass die Eigenschaft nicht als Zeichenfolge dargestellt werden kann. |
| void setaStext (Stringtext) | Verwenden Sie eine Zeichenfolge, um den internen Wert der Eigenschaft zu aktualisieren, der im Allgemeinen vom externen Eigenschaftseditor übergeben wird. |
| String [] GetTags () | Gibt eine Reihe von Zeichenfolgen zurück, die gültige Attributwerte darstellen, damit der Attributeditor dies auf die folgende Weise anzeigen kann. Gibt null standardmäßig zurück. |
| String getJavainitializationString () | Bietet einen Anfangswert für die Eigenschaft, die der Eigenschaftseditor als Standardwert für die Eigenschaft verwendet. |
Die Eigenschafts -Schnittstelle ist eine Kommunikationsbrücke zwischen internen Eigenschaftswerten und externen Einstellungswerten.
Java bietet eine bequeme Implementierungsklasse für PropertyEditor: PropertyEditorSupport, die die Eigenschafts -Schnittstelle implementiert. Wir können unseren eigenen Immobilienredakteur entwerfen, indem wir diese Klasse erweitern.
1.2 Beanattributbeschreibung (BeanInfo)
BeanInfo beschreibt bearbeitbare Eigenschaften in Javabäen und im entsprechenden Eigenschaftseditor. Jede Eigenschaft entspricht einem Eigenschaft Descriptor PropertyDescriptor.
Der Konstruktor von PropertyDescriptor verfügt über zwei Parameter: PropertyDescriptor (String PropertyName, Klasse Beanclass), wobei PropertyName der Eigenschaftsname ist; Beanclass ist die Klasse, die Javabäen entspricht.
PropertyDescriptor hat auch eine SetPropertyEditorClass -Methode (Class PropertyEditorClass), die einen Editor für Javabäe -Eigenschaften angibt.
Die wichtigste Methode in der BeanInfo -Schnittstelle ist: PropertyDescriptor [] getPropertyDescriptors (), das das Javabean -Eigenschaftsdeskriptor -Array zurückgibt.
Eine häufig verwendete Implementierungsklasse für die BeanInfo -Schnittstelle ist SimpleBeanInfo, die wir durch Erweiterung dieser Klasse maßgeschneiderte Funktionen implementieren können.
2 Spring Standard Property Editor
Spring's Property Editor unterscheidet sich vom traditionellen Immobilienredakteur für die IDE -Entwicklung. Es gibt keine UI -Schnittstelle und konvertiert nur den Textkonfigurationswert in der Konfigurationsdatei in den entsprechenden Wert der Bean -Eigenschaft.
Spring bietet einen Standard -Immobilien -Editor für gemeinsame Eigenschaftstypen in PropertyEditorregistrysupport, das in 3 Hauptkategorien unterteilt ist, mit insgesamt 32:
| Typ | veranschaulichen |
|---|---|
| Grundlegende Datentypen | [1] Grundlegende Datentypen wie: Boolean, int usw.; [2] Grundlegende Einkapselungsklassen der Datentyp, wie z. B. Boolesche, Ganzzahl usw.; [3] Grundlegende Datentyp -Arrays: char [] und byte []; [4] Große Zahlen: Bigdecimal und Biginteger. |
| Sammelklasse | Sammlung, Set, SortEdSet, List und SortedMap. |
| Ressourcen | Klasse, Klasse [], Datei, InputStream, Gebietsschema, Eigenschaften, Ressource [] und URL. |
In PropertyEditorRegistrysupport befinden sich zwei Variablen vom Kartentyp, die die Eigenschafteditoren speichern:
| Variabler Name | veranschaulichen |
|---|---|
| Defaulteditors | Der Editor, der den Standardattributtyp speichert, ist der Schlüssel des Elements der Attributtyp und der Wert ist die entsprechende Attribut -Editor -Instanz. |
| Customeditors | Benutzerdefinierte Attributeditoren speichern. |
3 Custom Spring Properties Editor
Wenn unsere Anwendung einen speziellen Attributyp definiert und den Attributwert in der Konfigurationsdatei buchstäblich konfigurieren möchte, können wir einen benutzerdefinierten Attributeditor schreiben und ihn mit dem Spring Container registrieren, um ihn zu implementieren.
Die meisten Redakteure für Spring Default Property Property erstrecken sich von java.beans.propertyEditorsupport. Wir können den Immobilienredakteur anpassen, indem wir PropertyEditorsupport erweitern. In der Frühlingsumgebung müssen Sie den wörtlichen Wert in der Konfigurationsdatei nur in ein Objekt des Eigenschaftstyps konvertieren, und Sie müssen keine UI -Schnittstelle bereitstellen, sodass Sie nur die Methode von SetAtext () von PropertyEditorsupport (∩_∩) o Haha ~ überschreiben müssen.
Angenommen, wir haben zwei Entitätsbuch und Autor, und wir hoffen, dass wir beim Konfigurieren des Buches den Autoramen direkt festlegen können.
Book.java
Public Class Book { / *** Autor* / privater Autor; / *** Buchtitel*/ privater Zeichenfolge Name; // Die Get/Setter -Methode auslassen}Autor.java
Public Class Autor {privater String -Name; // Die Get/Setter -Methode auslassen}Passen Sie zunächst den Immobilienredakteur des Autors an:
öffentliche Klasse CustomPropertyEditor erweitert PropertyEditorsupport {@Override public void setAtext (String text) löst illegalArgumentException aus {if (text == null || text.length () == 0) {Wirf neu illegalArgumentException ("Formatfehler"); } Author Author = new Author (); Autor.SetName (Text); // rufen Sie die Methode der übergeordneten Klasse an SetValue (Autor) an; }} Wenn Sie Beanfactory verwenden, müssen Sie registerCustomEditor(Class requiredType, PropertyEditor propertyEditor) manuell anrufen, um den benutzerdefinierten Eigenschaftseditor zu registrieren. Wenn Sie ApplicationContext verwenden, müssen Sie nur den CustomDitorConfiger in der Konfigurationsdatei registrieren. CustomEditorConFigurer implementiert die BeanfactoryPostProcessor -Schnittstelle, daher handelt es sich um einen Werkspostprozessor für Beans.
Registrieren Sie nun einen benutzerdefinierten Immobilien -Editor:
<!-Registrieren Sie einen benutzerdefinierten Eigenschaftseditor-> <bean> <Property name = "CustomEditors"> <map> <!-Schlüssel: Eigenschaftstyp; Wert: Property Editor-> <Eintrag key = "net.deniro.spring4.editor.author" value = "net.deniro.spring4.Editor name = "Autor" value = "haruki murakami"/> </bean>
Bei der Festlegung der Autoreneigenschaft des Buches wird das Custom Property Editor Registry abgerufen. Wenn der Property Editor CustomPropertyEditor entspricht, der dem Autor -Eigenschaftstyp entspricht, werden "Haruki Murakami" in ein Autorobjekt umwandelt.
Laut der Spezifikation wird Java nach der Klasse <JavaBean>Editor unter demselben Klassenpaket von Javabäen suchen. Wenn es vorhanden ist, wird automatisch <JavaBean>Editor als Immobilienredakteur des Javabäer verwendet. Feder unterstützt auch diese Spezifikation.
Wenn also eine Eigenschaftseditorklasse mit dem Namen Crorthoreditor unter dem Klassenpaket vorhanden ist, müssen Sie keinen benutzerdefinierten Eigenschaftseditor in der Konfigurationsdatei O (∩__∩) registrieren. O haha ~
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.