Что такое bean java
Перейти к содержимому

Что такое bean java

  • автор:

Что такое bean java

Все, что необходимо начинающему и опытному программисту

Любой объектный компонент можно рассматривать как фрагмент программного кода, обычно воплощаемого в классе. Чтобы создать VB-компонент, программист должен написать весьма сложный фрагмент программного кода и неукоснительно следовать условиям для правильного определения свойств, методов и событий, присущих этому компоненту.

Поскольку Delphi является вторым поколением визуальных средств программирования, то в нем создавать компоненты стало намного проще. Что же касается Java, то Bean («зерна кофе» (beans) — основные компоненты, из которых строится программа) — это не что иное, как класс. Вам нет необходимости разрабатывать дополнительный код или использовать специальные языковые расширения, чтобы выполнить что-то в виде Bean (Боба).

Единственная вещь, которую вы должны сделать, — немного изменить способ присвоения имен вашим методам. Этот способ именования должен быть понятен средству разработки прикладных программ (RAD-системе), чтобы легко можно было уже по имени определять, что это — свойство, событие или вызываемый на выполнение метод.

В документации по Java соглашение об именах ошибочно именуется «design pattern», хотя это вовсе никакие ни шаблоны для разработки, а просто соглашение об именах и больше ничего.

При проектировании компонентов Bean, обычно принимается следующее:

1. Для свойства с именем ххх обычно создаются два метода: getXxx( ) и setxxx ( ). По этим методам можно установить или получить свойства объекта.

2. Для логического выбора используется нечто подобное, но с именем «is» вместо «get.»

3. Для событий используется ключевое слово «listener», например:
addFooBarListener(FooBarListener) или removeFooBarListener(FooBarListener), чтобы обрабатывать событие FooBarEvent. Большинство событий и встроенных обработчиков, как правило, устраивают разработчиков, но не возбраняется попробовать написать свой собственный listener для обработки какого-нибудь специфического события.

Попробуем написать свой собственный компонент Bean.
За основу возьмем стандартный класс Java, который задает некий прямоугольник, и переопределим некоторые его свойства.

Код на Java для simpleBean будет простейший:

import java.awt.*;
import java.io.Serializable;
public class SimpleBean extends Canvas
implements Serializable
//Constructor sets inherited properties public
SimpleBean( )
setSize(60, 40) ;
setBackground(Color.red) ;
>
>

Последовательность шагов, которую нам надо выполнить для создания полноценного компонента Bean, будет такая:

1. Компиляция разработанного кода

В результате выполнения этого оператора образуется файл SimpleBean.class.

2. Подготовка манифест-файла.

Дело в том, что при пакетировании готового Bean в jar-файл с использованием стандартного Java-архиватора jar требуется включить в архив специальный текстовый файл, называемый манифест-файлом, который описывает содержимое архива, т. е. в общем виде из чего архив состоит. Программные контейнеры, которые впоследствии будут использовать этот боб, извлекая его из jar-файла, всегда требуют, чтобы манифест- файл был. Подробнее о структуре манифест-файла можно прочитать в описании jar-программы для Java. Она всегда входит в бесплатную поставку JDK любой версии. В случае simpleBean манифест-файл будет выглядеть следующим образом:

Эти две строки надо запомнить в текстовом файле с произвольным именем, например, manifest.tmp.

3. Далее надо упаковать созданный Bean в архив и обязательно включить в него манифест-файл. Это делается по команде:

jar cfm SimpieBean.jar manifest.tmp SimpieBean.class

Если Bean состоит из нескольких производных классов и образует Java- пакет, например, с именем bangbean, то его манифест-файл будет выглядеть следующим образом:

Manifest-Version: 1.0
Name: bangbean/BangBean.class
Java-Bean: True

При этом манифест-файл помещается в корень, и строка для упаковки компонента Bean со всеми его классами, размещающимися в каталоге c:\temp\bangbean, будет такая:

jar cfvm BangBean.jar manifest.txt -С bangbean/*.class

При этом после отработки команды архиватор jar выдаст вам следующую информацию:

added manifest
adding: bangbean/BangBean$ML.class (in=1556) (out=848) (deflated 45%)
adding: bangbean/BangBean$MML.class (in=668) (out=417) (deflated 37%)
adding: bangbean/BangBean.class (in=2740) (out=1334) (deflated 51%)

После этого считаем, что вы создали вполне работоспособный Bean, который можно загружать куда угодно и работать с ним так же, как и с элементом управления ActiveX.

Можно переопределять его свойства, вызывать его методы, заставить его реагировать на определенные события и т. д. Заметьте, что Bean — это гораздо более гибкий объект, чем ActiveX, потому что это всего лишь класс, а не специализированная программа или библиотека.
Данный класс написан на переносимом языке программирования, поэтому наш Bean можно даже включать в Delphi, в Visual Basic так же, как мы включаем в них купленные нами или самостоятельно разработанные управляющие элементы ActiveX.

В дальнейшем вы увидите, как можно это сделать, а пока поработаем с Bean SimpieBean в каком-нибудь IDE, например, Visual Age.

Из Visual Age загрузим ВеаnВох-контейнер, входящий в набор примеров Sun BDK Examples. Конечно, это можно сделать и непосредственно из Sun BDK (Bean Development Kit — бесплатная поставка), но некоторые его просто не имеют, хотя почти в любой RAD-системе, и в Java Builder, и в Visual Cafe, и в Visual Age, есть примеры работы с BDK.

После активизации ВеаnВох-контейнера (рис. 2.4) он автоматически загружает в свой левый фрейм все имеющиеся в каталоге jars уже готовые компоненты Bean. Их можно перетаскивать на рабочую панель и использовать. Если вы хотите загрузить новый Bean, надо просто перейти в меню FiIe -> LoadJar и указать местоположение архива с этим компонентом. После загрузки имя его появится в левом фрейме.

Рис. 2.4. Загрузка SimpleBean в контейнер sun.beanbox из среды Visual Аgе

На первый взгляд во всем этом нет ничего необычного, однако, посмотрим, что с этим Bean можно сделать еще? Для облегчения работ по дальнейшему совершенствованию и модификации Bean можно подготовить два Маkе- файла: один — для Unix, а другой — для Windows NT.

Теперь подготовим версию для Windows:

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru

Что такое bean java

Класс Java Bean должен соответствовать ряду ограничений:

  • иметь конструктор, который не принимает никаких параметров
  • определять для всех свойств, которые используются в jsp, методы геттеры и сеттеры
  • названия геттеров и сеттеров должны соответствовать условностям: перед именем переменной добавляется get (для геттера) и set (для сеттера), а название переменной включается с большой буквы. Например, если переменная называется firstName, то функции геттера и сеттера должны называться соответственно getFirstName и setFirstName. Однако для переменных типа boolean для функции геттера используется вместо get приставка is. Например, переменная enabled и геттер isEnabled.
  • реализовать интерфейс Serializable или Externalizable

Рассмотрим, как использовать классы JavaBean. Допустим, у нас есть следующая структура:

Java Beans in JavaEE

В папке Java Resources/src расположен класс User со следующим кодом:

import java.io.Serializable; public class User implements Serializable < private static final long serialVersionUID = 2041275512219239990L; private String name; private int age; public User() < this.name = ""; this.age = 0; >public User(String name, int age) < this.name = name; this.age = age; >public String getName() < return name; >public void setName(String name) < this.name = name; >public int getAge() < return age; >public void setAge(int age) < this.age = age; >>

Данный класс представляет пользователя и является классом Java Bean: он реализует интерфейс Serializable, имеет конструктор без параметров, а его методы — геттеры и сеттеры, которые предоставляют доступ к переменным name и age, соответствуют условностям.

В папке WebContent определена страница user.jsp . Определим в ней следующий код:

    User Java Bean Page   

Name: $

Age: $

Данная страница jsp получает извне объект user и с помощью синтаксиса EL выводит значения его свойств. Стоит обратить внимание, что здесь идет обращение к переменным name и age, хотя они являются приватными.

В папке Java Resources/src в файле HelloServlet.java определен сервлет HelloServlet:

import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/hello") public class HelloServlet extends HttpServlet < protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException < User tom = new User("Tom", 25); request.setAttribute("user", tom); getServletContext() .getRequestDispatcher("/user.jsp") .forward(request, response); >>

Сервлет создает объект User. Для передачи его на страницу user.jsp устанавливается атрибут «user» через вызов request.setAttribute(«user», tom) . Далее происходит перенаправление на страницу user.jsp. И, таким образом, страница получит данные из сервлета.

Что такое bean java

Объекты JavaBean определяют простую и мощную модель компонентов для Java. Цель объектов JavaBean — предоставить отдельные и многоразовые единицы, которыми разработчики могут управлять как программно, так и визуально с помощью инструментов компоновки.

Объекты JavaBean могут быть управляющими элементами GUI, но могут быть и не представленными визуально. Управляющие элементы GUI в Java обычно являются объектами JavaBean, чтобы ими можно было управлять инструментами компоновки. В J2EE простые объекты JavaBean обычно берутся из JSP, где они обеспечивают разделение презентации на языке HTML и кода на языке Java, содержащегося в объектах JavaBean.

Объект JavaBean — это класс Java с тремя различными составляющими:

Свойства JavaBean

Свойства JavaBean доступны другим компонентам. Обычно свойство — это частное значение, которое можно получить с помощью методов set и get, но оно может быть и вычисляемым значением. Обновление свойств может вызывать различные побочные эффекты.

Методы доступа к свойствам иногда называют аксессорами. Аксессоры могут быть методами get и set и подчиняются соглашениям об именах:

void setимя_свойства(тип_свойства value); // метод set
тип_свойства getимя_свойства() // метод get

Для булевского свойства метод get может быть следующим:

boolean isимя_свойства() // метод get для булевского свойства

Пример: пользовательский объект JavaBean

Ниже приведен пример простого объекта JavaBean (Customer) с двумя простыми свойствами: name и email. Обратите внимание, что свойства определяются парами методов set/get.

public class Customer private String name;
private String email;

public String getName() return name;
>

public void setName(String aName) name = aName;
>

public String getEmail() return email;
>

public void setEmail(String aEmail) email = aEmail;
>

Такие простые объекты JavaBean часто используются в JSP, где они позволяют передавать значения из форм Web-страниц.

Индексированные свойства

Помимо простых свойств, которые могут принимать только одно значение, существуют и свойства — массивы значений.

Индексированные свойства могут возвращать значение по указанному индексу или целый массив значений.

У индексированных свойств следующие сигнатуры:

void setимя_свойства(int index, тип_свойства value); // индексированный set
тип_свойства getter(int index); // индексированный get
void setимя_свойства(тип_свойства values[]); // массив set
тип_свойства[]getимя_свойства(); // массив get

Привязанные свойства

Механизм привязанных свойств обеспечивает рассылку уведомлений при изменении свойства. Объекты, заинтересованные в получении уведомлений об изменениях, регистрируют себя заранее, и когда свойство изменяется, зарегистрированным объектам отправляется соответствующее уведомление. Обычно это уведомление рассылается посредством события, выдаваемого компонентом с привязанным свойством после задания свойства.

Объект JavaBean с привязанным свойством предлагает методы регистрации и отмены регистрации заинтересованных объектов, называемых получателями. Разработчики могут определить свой собственный механизм уведомлений, но библиотеки Java предоставляют несколько распространенных классов поддержки в составе пакета java.beans.

Ограниченные свойства

Ограниченные свойства схожи с привязанными свойствами, но уведомление отправляется до фактического задания свойства. Это позволяет заинтересованным сторонам запретить изменение свойства, выдав исключительную ситуацию PropertyVetoException.

События и уведомление

События — это опция объектов JavaBean, позволяющая независимо разработанным компонентам обмениваться информацией друг с другом путем рассылки уведомлений об изменении состояния. В этой модели некоторые компоненты выдают события, а другие компоненты, находящиеся в роли получателей событий, их обрабатывают.

Для поддержки этой модели связи модель компонентов JavaBean предоставляет:

  • свойства, которые могут выдавать события (привязанные и ограниченные)
  • методы регистрации, чтобы получатели могли регистрироваться
  • события, содержащие информацию об изменении
  • получатели, которые могут реагировать на доставленное событие

Следующая диаграмма классов иллюстрирует эти концепции для объекта JavaBean EventSource с простым свойством int.

Во время настройки конкретные получатели регистрируются с объектом JavaBean. В один из последующих моментов другой объект вызывает метод setProperty, который запустит процесс уведомления путем создания объекта событий. Объект JavaBean EventSource вызовет метод propertyChange во всех зарегистрированных получателях. Получатели событий получат событие, прочтут его значения и отреагируют на него.

На следующей последовательной диаграмме иллюстрируется порядок вызовов:

Уведомление получателей выполняется синхронно по отношению к экземпляру JavaBean, который является источником события, однако получатель событий может обрабатывать их в другой нити.

Внутренний анализ

Внутренний анализ — это механизм среды выполнения, позволяющий обнаруживать свойства, события и методы JavaBean. Внутренний анализ применяется инструментами разработки и программами, не использующими закодированные зависимости в других компонентах. Работа механизма внутреннего анализа основана на анализе существующей информации с учетом соглашений об именах методов и интерфейсов. Класс BeanInfo поддерживает дополнительные функции внутреннего анализа. Соглашения об именах JavaBean, применяемые для внутреннего анализа, иногда называют «шаблонами проектирования», но их не следует смешивать с понятием «шаблон проектирования», существующим в объектно-ориентированном проектировании.

Постоянные данные

Объект JavaBean может постоянно храниться в памяти. Это достигается посредством механизма сериализации. Сериализация может быть автоматической или пользовательской, в зависимости от того, какие интерфейсы реализует JavaBean — сериализуемые или импортируемые. В JDK 1.4 появились новые классы XMLEncoder и XMLDecoder, позволяющие хранить экземпляры JavaBean в формате XML.

Настройка

Внешний вид и характеристики объекта JavaBean можно настраивать во время проектирования. Это особенно важно для визуальных объектов JavaBean, применяемых в графических пользовательских интерфейсах. Настройка выполняется с помощью редактора свойств или программ настройки. Программы настройки предоставляют пользовательский интерфейс для настройки экземпляра JavaBean во время проектирования.

BeanContext

BeanContext определяет логическую иерархию включений, позволяющую объектам JavaBean выяснять, какие функции и службы доступны в их среде. Механизмы BeanContext предоставляют поддержку логической иерархии включений объектов JavaBean и поиска служб, предлагаемых входящими в иерархию объектами JavaBean.

Среда активации объектов JavaBean™

Среда активации Java — это стандартное расширение Java, позволяющее определять тип фрагмента данных, инкапсулировать его, выяснять набор его доступных операций и создавать экземпляр компонента программного обеспечения, отвечающего требуемой операции над этим фрагментом.

Дополнительная информация

Дополнительная информация об объектах JavaBean приведена в документе JavaBeans API Specification, Version 1.01 на Web-сайте http://java.sun.com/. Выберите ссылку Docs & Training > Java 2 Platform, Standard Edition > Java 2 SDK, SE v1.3 documentation > JavaBeans > JavaBeans Specification.

Данная информация полностью или частично разработана компанией Inferdata Corporation.

© Copyright IBM Corp. 1987, 2006. Все права защищены.

Что такое bean в Spring

Не могу понять что такое Bean в википедии написано это как просто доменный объект, есть еще сервисы, контроллеры, DAO, что из них является бином и почему так называется, что я не так понимаю?

Отслеживать
задан 2 окт 2015 в 5:01
2,058 7 7 золотых знаков 35 35 серебряных знаков 71 71 бронзовый знак
2 окт 2015 в 6:02

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

В Spring-е бином (bean) называют любой класс, который управляется контейнером Spring. То есть такими вещами, как создание экземпляра бина, его инициализация, внедрение зависимостей и параметров, деинициализация, генерация всевозможных оберток над бином, занимается не ваш код, а IoC-контейнер Spring-а.

Отслеживать
ответ дан 17 окт 2015 в 22:19
34.5k 15 15 золотых знаков 66 66 серебряных знаков 95 95 бронзовых знаков
Получается и сервис и domain и controller являются бином?
19 окт 2015 в 2:51
Если они болтаются спринговом контейнере — они являются spring-бинами.
19 окт 2015 в 6:56

Ну по сути это класс с некоторыми ограничениями. 1)Конструктор используется без параметров. 2) Все поля private с доступом через геттер и сеттер.

Отслеживать
ответ дан 2 окт 2015 в 6:54
Евгений Платов Евгений Платов
1,363 1 1 золотой знак 8 8 серебряных знаков 7 7 бронзовых знаков
Почему я объявляю сервис бином почему не доменный объект не объявить, для чего он объявляется
2 окт 2015 в 8:55

Ни первое, ни второе, неверно. Может быть использован конструктор. Приватные поля могут инжектиться в случае использования автовайринга.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *