Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
В вычислениях на основе платформы Java JavaBeans - это классы, которые инкапсулируют множество объектов в один объект (bean-компонент). Они сериализуемы , имеют конструктор с нулевым аргументом и разрешают доступ к свойствам с помощью методов получения и установки . Название «Бин» было дано, чтобы охватить этот стандарт, целью которого является создание многократно используемых программных компонентов для Java .
Это многократно используемый программный компонент, написанный на Java, которым можно визуально управлять с помощью инструмента для создания приложений.
Особенности [ править ]
- Самоанализ
- Самоанализ - это процесс анализа Бина для определения его возможностей. Это важная функция Java Beans API, поскольку она позволяет другому приложению, например средству проектирования, получать информацию о компоненте.
- Характеристики
- Свойство - это подмножество состояния Бина. Значения, присвоенные свойствам, определяют поведение и внешний вид этого компонента. Они устанавливаются с помощью метода установки и могут быть получены с помощью метода получения.
- Настройка
- Настройщик может предоставить пошаговое руководство, которому должен следовать процесс, чтобы использовать компонент в определенном контексте.
- События
- Компоненты могут взаимодействовать с моделью EventObject EventListener. [ требуется разъяснение ]
- Упорство
- Постоянство - это способность сохранять текущее состояние Бина, включая значения свойств Бина и переменных экземпляра, в энергонезависимое хранилище и извлекать их позже.
- Методы
- Компонент должен использовать методы доступа для инкапсуляции свойств. Компонент может предоставлять другие методы для бизнес-логики, не связанные с доступом к свойствам.
Преимущества [ править ]
- Свойства, события и методы компонента могут быть доступны другому приложению.
- Компонент может регистрироваться для получения событий от других объектов и может генерировать события, которые отправляются этим другим объектам.
- Для настройки bean-компонента может быть предоставлено вспомогательное программное обеспечение.
- Параметры конфигурации bean-компонента могут быть сохранены в постоянном хранилище и восстановлены.
Недостатки [ править ]
- Класс с конструктором без аргументов может быть создан в недопустимом состоянии. [1] Если такой класс создается вручную разработчиком (а не автоматически какой-либо структурой), разработчик может не осознавать, что класс был создан неправильно. Компилятор не может обнаружить такую проблему, и даже если она задокументирована, нет гарантии, что разработчик увидит документацию.
- JavaBeans по своей сути изменчивы, поэтому им не хватает преимуществ, предлагаемых неизменными объектами . [1]
- Необходимость создавать геттеры для каждого свойства и сеттеры для многих, большинства или всех из них может привести к огромному количеству шаблонного кода . Это можно смягчить с помощью таких инструментов, как Lombok .
API JavaBeans [ править ]
Функциональность JavaBeans обеспечивается набором классов и интерфейсов в пакете java.beans .
Интерфейс | Описание |
---|---|
AppletInitializer | Методы в этом интерфейсе используются для инициализации Bean-компонентов, которые также являются апплетами . |
BeanInfo | Этот интерфейс позволяет разработчику указывать информацию о событиях, методах и свойствах Бина. |
Настройщик | Этот интерфейс позволяет разработчику предоставить графический пользовательский интерфейс, с помощью которого можно настроить bean-компонент. |
DesignMode | Методы в этом интерфейсе определяют, выполняется ли компонент в режиме разработки. |
ExceptionListener | Метод в этом интерфейсе вызывается при возникновении исключения. |
PropertyChangeListener | Метод в этом интерфейсе вызывается при изменении привязанного свойства. |
PropertyEditor | Объекты, реализующие этот интерфейс, позволяют конструктору изменять и отображать значения свойств. |
VetoableChangeListener | Метод в этом интерфейсе вызывается при изменении свойства Constrained. |
Видимость | Методы в этом интерфейсе позволяют bean-компоненту выполняться в средах, где графический интерфейс недоступен. |
Соглашения JavaBean [ править ]
Чтобы функционировать как класс JavaBean, класс объекта должен подчиняться определенным соглашениям об именах, построении и поведении методов. Эти соглашения позволяют иметь инструменты, которые могут использовать, повторно использовать, заменять и подключать Java Beans.
Требуются следующие условные обозначения:
- Класс должен иметь общедоступный конструктор по умолчанию (без аргументов). Это позволяет легко создавать экземпляры в рамках редактирования и активации.
- Класс свойство должно быть доступно с помощью GET , набора , является (может быть использовано для логических свойств вместо GET), до и других методов (так называемые аксессорами метод и методов мутаторов ) в соответствии со стандартным соглашением об именах . Это позволяет легко автоматизировать проверку и обновление состояния bean-компонентов в рамках фреймворков, многие из которых включают настраиваемые редакторы для различных типов свойств. Сеттеры могут иметь один или несколько аргументов.
- Класс должен быть сериализуемым . (Это позволяет приложениям и фреймворкам надежно сохранять, хранить и восстанавливать состояние компонента независимо от виртуальной машины и платформы.)
Пример кода [ править ]
пакетный плеер ;открытый класс PersonBean реализует java . io . Serializable { / ** Свойства ** / private boolean deceased = false ; частный список списка ; / ** Свойство "имя", доступно для чтения / записи. * / private String name = null ; / ** Конструктор без аргументов (не принимает аргументов). * / public PersonBean () { } общественный список getList () { список возврата ; } public void setList ( окончательный список списка ) { this . список = список ; } / ** * Получатель свойства "name". * / public String getName () { возвращаемое имя ; } / ** * Установщик для свойства "имя". * * @param value * / public void setName ( final String value ) { this . имя = значение ; } / ** * Getter для свойства «умершего» * Различный синтаксис для булева поля (это против прибудешь) * / общественные логическое isDeceased () { возвращение умерших ; } / ** * Установщик для свойства «умерший». * @Param значение * / общественного недействительными setDeceased ( логическое значение ) { умершей = значение ; } }
TestPersonBean.java
:
импортировать player.PersonBean ;/ ** * Класс «TestPersonBean». * / public class TestPersonBean { / ** * Метод тестера main для класса PersonBean. * * @param arguments * / public static void main ( final String [] arguments ) { final PersonBean person = new PersonBean (); человек . setName ( "Боб" ); человек . setDeceased ( ложь ); человек . setList ( новый ArrayList ()); // Вывод: "Боб [жив]" Система . из . печать ( человек . getName ()); Система . из . println ( person . isDeceased () ? "[умерший]" : "[живой]" ); } }
<jsp: useBean id = "person" class = "player.PersonBean" scope = "page" /> <jsp: setProperty name = "person" property = "*" /><html> <body> Имя: <jsp: getProperty name = "person" property = "name" /> <br/> Умер? <jsp: getProperty name = "person" property = " deceased " /> <br/> <br/> <form name = "beanTest" method = "POST" action = "testPersonBean.jsp" > Введите имя: <input type = "text" name = "name" size = "50" > <br/> Выберите опцию: <select name = "deceased" > <option value = "false" > Жив </option> <option value = "true" > Dead </option> </select> <input type = "submit" value = "Протестируйте Бин " > </form> </body> </html>
Ссылки [ править ]
- ^ a b Блох, Джошуа (2008). Эффективная Java (Второе изд.). Эддисон-Уэсли. п. 13 . ISBN 978-0-321-35668-0.
Внешние ссылки [ править ]
- Руководства Oracle по JavaBeans
- Спецификация JavaBeans