Подтвердить что ты не робот

В чем преимущество использования Java Beans?

Я считаю, что понимаю, что такое Java Beans: Java-классы (классы), содержащие конструктор no-arg, сериализуемы и выставляют свои поля с помощью геттеров и сеттеров.

  • Должен ли Java Bean выставлять все свои поля, чтобы квалифицироваться как bean? Если нет, нужно ли даже выставлять какие-либо данные?

  • Может ли Java Beans включать конструкторы с аргументами, а также конструктор no-arg?

  • Какова цель Java Beans, кроме как соответствовать определенному стилю кодировки? Кажется, что есть много разговоров о 'beans this' или 'beans that', но я не знаю, почему они выгодны, в частности.

Я могу полностью создать конструктор no-arg. Для этого может быть множество причин, и я не удивлюсь, если конструктор no-arg поможет компилятору сделать некоторые оптимизации. Я также могу понять, как сделать ваш класс сериализуемым. Даже если класс никогда не будет сериализован, он может быть, и вернуться назад, чтобы сделать это ретроактивно, может быть раздражающим (или невозможным в библиотеке с черным ящиком).

Но самым любопытным является требование иметь все поля, доступные через геттеры и сеттеры. Я использую их в своей работе, когда мне это нужно, но кажется странным, что Java Beans требует их (возможно, все они, в зависимости от моего ответа на # 1). Если это проблема с отражением, не может ли отражение получить поля так же легко? Если это проблема с выполнением большего, чем просто установка значения, не может ли отражение использовать геттер/сеттер над полем, если метод существует?

4b9b3361

Ответ 1

JavaBean сам по себе не очень интересен, это просто класс Java, который соответствует некоторым стандартам, перечисленным выше. Тем не менее, соответствие этому стандарту является одним из столпов, на которых построена структура Java EE, и она появляется в нескольких местах. Я подозреваю, что когда вы слышите обо всех замечательных вещах, которые могут делать JavaBeans, что упоминается в Enterprise JavaBeans (EJB). FYI, существует несколько различных типов EJB, перечисленных ниже:

  • Entity Beans
  • Сессионная сессия Beans
  • Безстоящий сеанс Beans

Ниже перечислены некоторые детали...

Объект Beans

Возможно, вы захотите прочитать/записать объекты в/из базовой базы данных. Вы можете использовать JDBC/SQL для этого, но вы также можете использовать инфраструктуру persistance. Спецификация Java EE включает спецификацию для стойкости, в которой вы объявляете свой класс "сущностью bean", и Java автоматически генерирует таблицы базы данных и логику для сопоставления записей в вашей базе данных и объектах в вашей программе. Первоначально упорство было чем-то, что требовало использования сервера приложений (например, Glassfish, JBoss, Geronimo и т.д.), Но AFAIK, вы можете использовать его в настольных приложениях без серверного компонента. Фактическая реализация обеспечивается библиотекой более низкого уровня, такой как Eclipselink, Toplink, Hibernate и т.д., Но Java API абстрагирует любые различия между ними.

Сессионная сессия Beans

Представьте, что вы хотите создать экземпляр класса Java, который существует в отдельной JVM. JVM могут работать на одной физической машине, но в равной степени могут находиться на отдельных компьютерах, обменивающихся по сети. Используя сервер приложений Java EE, вы можете создать класс, который может быть создан клиентами сервера приложений. Эти клиенты могут создавать экземпляр класса, который будет действовать как обычный объект, но любые методы, которые вызывают на объекте, выполняются на сервере, а результаты передаются обратно вызывающему. Это в основном объектно-ориентированная форма вызовов удаленных процедур.

сеанс бездействия Beans

Это незначительная вариация в сеансе состояния beans. С состоянием beans, если сервер имеет 1000 клиентов, тогда потенциально может понадобиться создать 1000 экземпляров bean и запомнить, какой экземпляр принадлежит клиенту. С помощью stateless beans сервер создает пул beans и не беспокоится о том, какой клиент владеет, который bean. Когда клиент вызывает метод, сервер выбирает bean из пула и использует его, возвращая его в пул при завершении. Вы используете сеанс с состоянием beans, когда вы хотите, чтобы сервер запоминал данные о каждом клиенте, вы будете использовать stateless beans, когда вам не нужно будет помнить специфические данные клиента. Обратите внимание, что состояние без состояния beans может иметь состояние, это просто, что это состояние не будет представлять интереса для клиента.

Ответ 2

Они придерживаются четкой спецификации.

Благодаря этому есть безумно много инструментов для облегчения работы с Javabeans (или просто наоборот). Существуют инструменты, которые могут автогенерировать их на основе некоторых данных с определенным вкусом (XML, JSON, CSV, DDL и т.д.) И/или наоборот, а также читать/манипулировать/сопоставлять их, например Commons BeanUtils, Dozer, EZMorph и т.д. Кроме того, существует много структур MVC/ORM, которые работают с Javabeans, например JPA, Hibernate, JSF, Spring и т.д. Даже немного достойная IDE, например Eclipse, знает, как автогенерировать Javabeans на основе только некоторых полей.

Это инструменты и рамки вокруг Javabeans, которые облегчают нашу жизнь. Это спецификация Javabeans, которая создала эти вещи.

Ответ 3

В первую очередь, Java Bean является программным компонентом многократного использования.

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

Преимущество этого в том, что вы получаете все эти маленькие кусочки, которые вы можете легко наладить вместе. Кроме того, их легко повторно использовать и удалять.

Даже если вы не используете какую-либо визуальную среду для соединения Beans (как предполагает предложение Bean), это по-прежнему является причиной использования beans: для получения небольших фрагментов кода, которые легко использовать.

Если вы не используете визуальный инструмент, не так важно, чтобы ваш Bean имел конструктор с 0 аргументами или сериализуем.

Ответ 4

1) Beans независим от платформы, это означает, что он может быть запущен в любом месте.

2) Он может быть запущен в любом языке и распространен в природе.

3) Можно управлять методами, свойствами и событиями Beans.

4) Легко настроить Java beans.

5) A bean может принимать и создавать события.

6) Конфигурационные настройки bean могут сохраняться постоянно и могут быть получены в любое время.

Ответ 5

Самое большое преимущество заключается в том, что ваш beans построен в соответствии со спецификацией и может использоваться непосредственно с библиотеками и фреймами "bean -compatible".

Например, большинство фреймворков для Serialization (XML, JSON, YAML,...) часто могут использовать beans напрямую без конфигурации.

Ответ 6

Я думаю, что самое большое преимущество bean-компонента состоит в том, что можно передавать данные (более или менее) в виде одного объекта. Нет необходимости делать много параметров в определении метода, вместо этого можно использовать bean вместо этого и передавать данные в форме объекта напрямую. Это обеспечивает лучшую архитектуру программы... То, что я думаю