JavaBeans

Разработчик вычислительных технологий Sun Microsystems

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

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

В рамках стандартизации все компоненты должны быть сериализуемыми , иметь конструктор с нулевым аргументом и разрешать доступ к свойствам с помощью методов getter и setter .

Функции

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

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

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

Недостатки

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

API JavaBeans

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

ИнтерфейсОписание
Инициализатор апплетаМетоды в этом интерфейсе используются для инициализации компонентов Beans, которые также являются апплетами .
BeanInfoЭтот интерфейс позволяет разработчику указывать информацию о событиях, методах и свойствах компонента.
НастройщикЭтот интерфейс позволяет разработчику предоставить графический пользовательский интерфейс, с помощью которого можно настраивать компонент.
DesignModeМетоды в этом интерфейсе определяют, выполняется ли компонент в режиме разработки.
ExceptionListenerМетод в этом интерфейсе вызывается при возникновении исключения.
PropertyChangeListenerМетод в этом интерфейсе вызывается при изменении привязанного свойства.
Редактор свойствОбъекты, реализующие этот интерфейс, позволяют проектировщику изменять и отображать значения свойств.
ВетоируемыйИзменитьСлушательМетод в этом интерфейсе вызывается при изменении ограниченного свойства.
ВидимостьМетоды в этом интерфейсе позволяют компоненту выполняться в средах, где графический интерфейс пользователя недоступен.

Соглашения JavaBean

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

Требуются следующие соглашения:

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

Пример кода

проигрыватель пакетов ; публичный класс PersonBean реализует java . io . Serializable {      /** Свойства **/ private boolean died = false ;      Список частных лиц ;   /** Свойство "name", доступно для чтения/записи. */ private String name = null ;      /** Конструктор без аргументов (не принимает аргументов). */ public PersonBean () { }     public List getList ( ) { return list ; } public void setList ( final List list ) { this.list = list ; }                 /**  * Геттер для свойства "name".  */ public String getName () { return name ; }        /**  * Сеттер для свойства "name".  *  * @param value  */ public void setName ( final String value ) { this . name = value ; }           /**  * Геттер для свойства "deceased"  * Другой синтаксис для логического поля (is против get)  */ public boolean isDeceased () { return died ; }        /**  * Сеттер для свойства "умерший".  * @param value  */ public void setDeceased ( boolean value ) { died = value ; } }         

TestPersonBean.java:

импортировать player.PersonBean ; /** * Класс "TestPersonBean". */ public class TestPersonBean { /**  * Метод тестера "main" для класса "PersonBean".  *  * @param arguments  */ public static void main ( final String [] arguments ) { final PersonBean person = new PersonBean ();                  person.setName ( "Боб " ) ; person.setDeceased ( false ) ; person.setList ( new ArrayList ( ) ) ;    // Вывод: "Боб [жив]" System.out.print ( person.getName ( ) ) ; System.out.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" > Мертв </option> </select> <input type= "submit" value= "Test the Bean" > </form> </body> </html>                                    

Смотрите также

Ссылки

  1. ^ ab Bloch, Joshua (2008). Effective Java (Второе издание). Addison-Wesley. стр. 13. ISBN 978-0-321-35668-0.
  • Учебные пособия Oracle JavaBeans
  • Спецификация JavaBeans
Retrieved from "https://en.wikipedia.org/w/index.php?title=JavaBeans&oldid=1267043340"