JavaBeans - JavaBeans

Beim Computing auf der Grundlage der Java- Plattform ist JavaBeans eine Technologie, die von Sun Microsystems entwickelt und 1996 als Teil des [Java Development Kit|JDK] 1.1 veröffentlicht wurde.

Die 'Beans' von JavaBeans sind Klassen, die ein oder mehrere Objekte in ein einziges standardisiertes Objekt (die Bean) kapseln . Diese Standardisierung ermöglicht eine allgemeinere Handhabung der Beans, was eine einfachere Wiederverwendung und Selbstbeobachtung von Code ermöglicht . Dadurch können die Beans wiederum als Softwarekomponenten behandelt und von Editoren und IDEs visuell manipuliert werden, ohne dass eine anfängliche Konfiguration erforderlich ist oder interne Implementierungsdetails bekannt sind.

Als Teil der Standardisierung müssen alle Beans serialisierbar sein , einen Konstruktor ohne Argumente haben und den Zugriff auf Eigenschaften mithilfe von Getter- und Setter-Methoden ermöglichen .

Merkmale

Selbstbeobachtung
Introspektion ist ein Prozess der Analyse einer Bean, um ihre Fähigkeiten zu bestimmen. Dies ist eine wesentliche Funktion der Java-Beans-API, da sie es einer anderen Anwendung, z. B. einem Design-Tool, ermöglicht, Informationen über eine Komponente zu erhalten.
Eigenschaften
Eine Eigenschaft ist eine Teilmenge des Zustands einer Bean. Die den Eigenschaften zugewiesenen Werte bestimmen das Verhalten und das Aussehen dieser Komponente. Sie werden durch ein Setter-Verfahren gesetzt und können durch ein Getter-Verfahren erhalten werden.
Anpassung
Ein Anpasser kann eine Schritt-für-Schritt-Anleitung bereitstellen, die der Prozess befolgen muss, um die Komponente in einem bestimmten Kontext zu verwenden.
Veranstaltungen
Beans können mit dem EventObject EventListener-Modell interagieren.
Beharrlichkeit
Persistenz ist die Fähigkeit, den aktuellen Zustand einer Bean, einschließlich der Werte der Eigenschaften und Instanzvariablen einer Bean, in einem nichtflüchtigen Speicher zu speichern und zu einem späteren Zeitpunkt wieder abzurufen.
Methoden
Eine Bean sollte Accessormethoden verwenden , um die Eigenschaften zu kapseln . Eine Bean kann andere Methoden für die Geschäftslogik bereitstellen, die sich nicht auf den Zugriff auf die Eigenschaften beziehen.

Vorteile

  • Die Eigenschaften, Ereignisse und Methoden einer Bean können einer anderen Anwendung zugänglich gemacht werden.
  • Eine Bean kann sich registrieren, um Ereignisse von anderen Objekten zu empfangen, und kann Ereignisse generieren, die an diese anderen Objekte gesendet werden.
  • Hilfssoftware kann bereitgestellt werden, um bei der Konfiguration einer Bean zu helfen.
  • Die Konfigurationseinstellungen einer Bean können im persistenten Speicher gespeichert und wiederhergestellt werden.

Nachteile

  • Eine Klasse mit einem Konstruktor mit Nullargumenten kann in einem ungültigen Zustand instanziiert werden. Wenn eine solche Klasse manuell von einem Entwickler instanziiert wird (und nicht automatisch durch eine Art Framework), erkennt der Entwickler möglicherweise nicht, dass die Klasse nicht ordnungsgemäß instanziiert wurde. Der Compiler kann ein solches Problem nicht erkennen, und selbst wenn es dokumentiert ist, gibt es keine Garantie dafür, dass der Entwickler die Dokumentation sieht.
  • JavaBeans sind von Natur aus veränderbar und haben daher nicht die Vorteile, die unveränderliche Objekte bieten .
  • Getter für jede Eigenschaft und Setter für viele, die meisten oder alle von ihnen erstellen zu müssen, kann zu einer immensen Menge an Boilerplate-Code führen . Dies kann mit Tools wie Lombok abgeschwächt werden .

JavaBeans-API

Die JavaBeans-Funktionalität wird durch eine Reihe von Klassen und Schnittstellen im java.beans- Paket bereitgestellt.

Schnittstelle Beschreibung
AppletInitialisierer Methoden in dieser Schnittstelle werden verwendet, um Beans zu initialisieren, die auch Applets sind .
BohnenInfo Diese Schnittstelle ermöglicht es dem Designer, Informationen über die Ereignisse, Methoden und Eigenschaften einer Bean anzugeben.
Anpasser Diese Schnittstelle ermöglicht es dem Designer, eine grafische Benutzerschnittstelle bereitzustellen, über die eine Bean konfiguriert werden kann.
Designmodus Methoden in dieser Schnittstelle bestimmen, ob eine Bean im Designmodus ausgeführt wird.
AusnahmeListener Eine Methode in dieser Schnittstelle wird aufgerufen, wenn eine Ausnahme aufgetreten ist.
PropertyChangeListener Eine Methode in dieser Schnittstelle wird aufgerufen, wenn eine gebundene Eigenschaft geändert wird.
PropertyEditor Objekte, die diese Schnittstelle implementieren, ermöglichen es dem Designer, Eigenschaftswerte zu ändern und anzuzeigen.
VetoableChangeListener Eine Methode in dieser Schnittstelle wird aufgerufen, wenn eine Constrained-Eigenschaft geändert wird.
Sichtweite Methoden in dieser Schnittstelle ermöglichen die Ausführung einer Bean in Umgebungen, in denen die GUI nicht verfügbar ist.

JavaBean-Konventionen

Um als JavaBean- Klasse zu funktionieren , muss eine Objektklasse bestimmte Konventionen bezüglich Methodenbenennung, Konstruktion und Verhalten befolgen. Diese Konventionen ermöglichen Tools, die Java Beans verwenden, wiederverwenden, ersetzen und verbinden können.

Die erforderlichen Konventionen sind wie folgt:

  • Die Klasse muss einen öffentlichen Standardkonstruktor (ohne Argumente) haben. Dies ermöglicht eine einfache Instanziierung innerhalb von Bearbeitungs- und Aktivierungsframeworks.
  • Die Klasse Eigenschaften müssen zugänglich sein mit get , set , wird (kann für boolean Eigenschaften anstelle von get verwendet werden), zu und anderen Methoden (sog Accessormethoden und Mutatormethoden ) nach einer Standardnamenskonvention . Dies ermöglicht eine einfache automatisierte Überprüfung und Aktualisierung des Bean-Zustands innerhalb von Frameworks, von denen viele benutzerdefinierte Editoren für verschiedene Arten von Eigenschaften enthalten. Setter können ein oder mehrere Argumente haben.
  • Die Klasse sollte serialisierbar sein . (Auf diese Weise können Anwendungen und Frameworks den Zustand der Bean unabhängig von der VM und der Plattform zuverlässig speichern, speichern und wiederherstellen .)

Codebeispiel

package player;

public class PersonBean implements java.io.Serializable {

    /** Properties **/
    private boolean deceased = false;

    private List list;

    /** Property "name", readable/writable. */
    private String name = null;

    /** No-arg constructor (takes no arguments). */
    public PersonBean() {
    }

    public List getList() {
        return list;
    }
	
    public void setList(final List list) {
        this.list = list;
    }

    /**
     * Getter for property "name".
     */
    public String getName() {
        return name;
    }

    /**
     * Setter for property "name".
     *
     * @param value
     */
    public void setName(final String value) {
        this.name = value;
    }

    /**
     * Getter for property "deceased"
     * Different syntax for a boolean field (is v.s. get)
     */
    public boolean isDeceased() {
        return deceased;
    }

    /**
     * Setter for property "deceased".
     * @param value
     */
    public void setDeceased(boolean value) {
        deceased = value;
    }
}

TestPersonBean.java:

import player.PersonBean;

/**
 * Class "TestPersonBean".
 */
public class TestPersonBean {
    /**
     * Tester method "main" for class "PersonBean".
     *
     * @param arguments
     */
    public static void main(final String[] arguments) {
        final PersonBean person = new PersonBean();

        person.setName("Bob");
        person.setDeceased(false);
        person.setList(new ArrayList());

        // Output: "Bob [alive]"
        System.out.print(person.getName());
        System.out.println(person.isDeceased() ? " [deceased]" : " [alive]");
    }
}
<jsp:useBean id="person" class="player.PersonBean" scope="page"/>
<jsp:setProperty name="person" property="*"/>

<html>
    <body>
        Name: <jsp:getProperty name="person" property="name"/><br/>
        Deceased? <jsp:getProperty name="person" property="deceased"/><br/>
        <br/>
        <form name="beanTest" method="POST" action="testPersonBean.jsp">
            Enter a name: <input type="text" name="name" size="50"><br/>
            Choose an option:
            <select name="deceased">
                <option value="false">Alive</option>
                <option value="true">Dead</option>
            </select>
            <input type="submit" value="Test the Bean">
        </form>
    </body>
</html>

Verweise

2.

Externe Links

  1. ^ Setiawan, Tedi (15. September 2021). "HTML-Codes analysieren" . SITEDAYEXE . Abgerufen am 15. September 2021 .