Jump to content

JavaBeans

В вычислениях на основе Java платформы JavaBeans — это технология, разработанная Sun Microsystems и выпущенная в 1996 году как часть JDK 1.1.

Компоненты JavaBeans — это классы, которые инкапсулируют один или несколько объектов в один стандартизированный объект (компонент). Эта стандартизация позволяет обрабатывать bean-компоненты более общим способом, что упрощает повторное использование кода и самоанализ . Это, в свою очередь, позволяет рассматривать bean-компоненты как программные компоненты и визуально манипулировать ими со стороны редакторов и IDE без необходимости какой-либо начальной настройки или знания каких-либо внутренних деталей реализации.

В рамках стандартизации все bean-компоненты должны быть сериализуемыми , иметь конструктор с нулевым аргументом и разрешать доступ к свойствам с использованием методов получения и установки .

Самоанализ
Интроспекция — это процесс анализа компонента для определения его возможностей. Это важная особенность спецификации Java Beans, поскольку она позволяет другому приложению, например средству проектирования, получать информацию о компоненте.
Характеристики
Свойство является подмножеством состояния компонента. Значения, присвоенные свойствам, определяют поведение и внешний вид этого компонента. Они устанавливаются с помощью метода установки и могут быть получены с помощью метода получения.
Кастомизация
Специалист по настройке может предоставить пошаговое руководство, которому должен следовать процесс, чтобы использовать компонент в определенном контексте.
События
Компоненты могут взаимодействовать с моделью EventObject EventListener. [ нужны разъяснения ]
Упорство
Постоянство — это способность сохранять текущее состояние компонента, включая значения свойств компонента и переменных экземпляра, в энергонезависимое хранилище и извлекать их позже.
Методы
Компонент должен использовать методы доступа для инкапсуляции свойств. Компонент может предоставлять другие методы бизнес-логики, не связанные с доступом к свойствам.

Преимущества

[ редактировать ]
  • Свойства, события и методы компонента могут быть доступны другому приложению.
  • Компонент может зарегистрироваться для получения событий от других объектов и может генерировать события, которые отправляются этим другим объектам. [ нужна ссылка ]
  • Для настройки компонента может быть предоставлено вспомогательное программное обеспечение. [ нужна ссылка ]
  • Параметры конфигурации компонента можно сохранить в постоянном хранилище и восстановить. [ нужна ссылка ]

Недостатки

[ редактировать ]
  • Класс с конструктором без аргументов может быть создан в недопустимом состоянии. [1] Если экземпляр такого класса создается разработчиком вручную (а не автоматически с помощью какой-либо платформы), разработчик может не осознавать, что экземпляр класса был создан неправильно. Компилятор не может обнаружить такую ​​проблему, и даже если она задокументирована, нет гарантии, что разработчик увидит документацию.
  • JavaBeans по своей природе изменчивы и поэтому лишены преимуществ, предлагаемых неизменяемыми объектами . [1]
  • Необходимость создавать геттеры для каждого свойства и сеттеры для многих, большинства или всех из них может привести к созданию огромного количества шаблонного кода .

Функциональность JavaBeans обеспечивается набором классов и интерфейсов в java.beans упаковка.

Интерфейс Описание
АпплетИнициализатор Методы в этом интерфейсе используются для инициализации Bean-компонентов, которые также являются апплетами .
БинИнфо Этот интерфейс позволяет разработчику указывать информацию о событиях, методах и свойствах компонента.
Настройщик Этот интерфейс позволяет разработчику предоставить графический интерфейс пользователя, с помощью которого можно настроить компонент.
Режим дизайна Методы в этом интерфейсе определяют, выполняется ли компонент в режиме разработки.
Слушатель исключений Метод в этом интерфейсе вызывается при возникновении исключения.
Прослушиватель PropertyChangeListener Метод в этом интерфейсе вызывается при изменении связанного свойства.
Редактор свойств Объекты, реализующие этот интерфейс, позволяют дизайнеру изменять и отображать значения свойств.
VetoableChangeListener Метод в этом интерфейсе вызывается при изменении свойства Constrained.
Видимость Методы этого интерфейса позволяют компоненту выполняться в средах, где графический интерфейс недоступен.

Соглашения JavaBean

[ редактировать ]

Чтобы функционировать как класс JavaBean , класс объекта должен подчиняться определенным соглашениям об именовании, построении и поведении методов. Эти соглашения позволяют иметь инструменты, которые могут использовать, повторно использовать, заменять и подключать Java Beans.

Необходимые соглашения следующие:

  • Класс должен иметь общедоступный конструктор по умолчанию (без аргументов). Это позволяет легко создавать экземпляры в рамках редактирования и активации.
  • класса Свойства должны быть доступны с помощью get , set , is (можно использовать для логических свойств вместо get), to и других методов (так называемых методов доступа и методов-мутаторов ) в соответствии со стандартным соглашением об именах . Это позволяет легко автоматизировать проверку и обновление состояния компонента в средах, многие из которых включают специальные редакторы для различных типов свойств. Сеттеры могут иметь один или несколько аргументов.
  • Класс должен быть сериализуемым . (Это позволяет приложениям и платформам надежно сохранять, хранить и восстанавливать состояние компонента независимо от виртуальной машины и платформы.)

Пример кода

[ редактировать ]
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 vs 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>

См. также

[ редактировать ]
  1. ^ Jump up to: а б Блох, Джошуа (2008). Эффективная Java (Второе изд.). Аддисон-Уэсли. п. 13 . ISBN  978-0-321-35668-0 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f25ffce2f279bc233a198ddb742b5787__1690040940
URL1:https://arc.ask3.ru/arc/aa/f2/87/f25ffce2f279bc233a198ddb742b5787.html
Заголовок, (Title) документа по адресу, URL1:
JavaBeans - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)