Места, где используются JavaBeans?

Что такое JavaBean и зачем он мне нужен? Так как я могу создавать все приложения с классом и структурой интерфейса? Зачем мне нужен beans? И можете ли вы дать мне несколько примеров, где beans необходимы вместо классов и интерфейсов?

Пожалуйста, объясните существенность bean в приведенном ниже контексте:

  • Wep apps
  • Автономные приложения

Ответы

Ответ 1

Они часто просто представляют данные реального мира. Вот простой пример Джавабея:

public class User implements java.io.Serializable {

    // Properties.
    private Long id;
    private String name;
    private Date birthdate;

    // Getters.
    public Long getId() { return id; }
    public String getName() { return name; }
    public Date getBirthdate() { return birthdate; }

    // Setters.
    public void setId(Long id) { this.id = id; }
    public void setName(String name) { this.name = name; }
    public void setBirthdate(Date birthdate) { this.birthdate = birthdate; }

    // Important java.lang.Object overrides.
    public boolean equals(Object other) {
        return (other instanceof User) && (id != null) ? id.equals(((User) other).id) : (other == this);
    }
    public int hashCode() {
        return (id != null) ? (getClass().hashCode() + id.hashCode()) : super.hashCode();
    }
    public String toString() {
        return String.format("User[id=%d,name=%s,birthdate=%d]", id, name, birthdate);
    }
}

Реализация Serializable не является обязательной, но очень полезна, если вы хотите сохранить или перенести Javabeans за пределы памяти Java, например. в жестком диске или по сети.

В качестве класса DAO вы можете использовать его для создания списка пользователей, в которых вы сохраняете данные таблицы user в базе данных:

List<User> users = new ArrayList<User>();
while (resultSet.next()) {
    User user = new User();
    user.setId(resultSet.getLong("id"));
    user.setName(resultSet.getString("name"));
    user.setBirthdate(resultSet.getDate("birthdate"));
    users.add(user);
}
return users;

В, например, для класса Servlet вы можете использовать его для передачи данных из базы данных в пользовательский интерфейс:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    List<User> users = userDAO.list();
    request.setAttribute("users", users);
    request.getRequestDispatcher("users.jsp").forward(request, response);
}

В, например, на странице JSP вы можете получить доступ к EL, который следует за javabean соглашениями, для отображения данные:

<table>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Birthdate</th>
    </tr>
    <c:forEach items="${users}" var="user">
        <tr>
            <td>${user.id}</td>
            <td><c:out value="${user.name}" /></td>
            <td><fmt:formatDate value="${user.birthdate}" pattern="yyyy-MM-dd" /></td>
        </tr>
    </c:forEach>
</table>

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

См. также:

Ответ 2

Beans сами

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

  • Они сериализуются красиво.
  • Может быть создан с использованием отражения.
  • В противном случае можно легко управлять отражением.
  • Хорошо для инкапсуляции фактических данных из бизнес-кода.
  • Общие соглашения означают, что любой может использовать ваш beans И ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ КАЖДЫЙ ELSE beans без какой-либо документации/руководства легко и последовательно.
  • Очень близко к POJO, что на самом деле означает еще большую интероперабельность между отдельными частями системы.

Также есть, конечно, Enterprise JavaBeans, которые являются совершенно другим вопросом и не должны смешиваться с обычными JavaBeans. Я просто хотел упомянуть EJB: s, потому что имена похожи, и легко получить эти два путаных.

Beans в веб-приложениях

Если вы считаете "нормальные" JavaBeans в контексте веб-приложений, они имеют больше смысла, чем носить обувь в ваших ногах. Поскольку спецификация Servlet требует, чтобы сеансы были сериализуемыми, это означает, что вы должны хранить свои данные в сеансе как что-то сериализуемое - почему бы не сделать его bean тогда! Просто бросьте свой SomeBusinessDataBean в сеанс, и вам хорошо идти, смешно легко, совместимо с требованиями и удобно.

Также перенос этих данных вокруг приложения также легко, так как JavaBeans поможет вам полностью отделить части вашего приложения. Думайте JavaBeans как письмо и различные подсистемы приложения как отделы в очень большой корпорации: Dept.A отправляет кучу данных в Dept.B, Dept.B не знает - и даже не заботится - где данные поступают из просто как и должно быть, и может просто открыть письмо, прочитать материал и сделать свою работу на основе этих данных.

Beans в автономных приложениях

На самом деле, что выше относится к автономным приложениям, единственное отличие заключается в том, что вы можете испортить интерфейс пользователя немного больше, поскольку автономные приложения имеют пользовательский интерфейс с пользовательским интерфейсом: s, в то время как веб-приложения имеют пользовательский интерфейс statelss, который в некоторых случаях только имитирует состояние UI: s. Из-за этой разницы легче сделать беспорядок с автономным приложением, но это стоит целую другую тему и не имеет прямого отношения к JavaBeans вообще.

Ответ 3

A bean на самом деле ничего. Для класса, который должен быть "bean", все, что требуется:

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

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

Вы можете найти более прямо от Sun здесь.

Ответ 4

Java Bean - это программный компонент, который был разработан для многоразового использования в различных средах. Нет ограничений на возможности Bean. Он может выполнять простую функцию, такую ​​как проверка орфографии документа или сложная функция, например прогнозирование эффективности портфеля акций. A Bean может быть видимым для конечного пользователя. Одним из примеров этого является кнопка на графическом пользовательском интерфейсе. A Bean также может быть невидимым для пользователя. Программное обеспечение для декодирования потока мультимедийной информации в режиме реального времени является примером такого типа строительного блока. Наконец, Bean может быть сконструирован для автономной работы на рабочей станции пользователя или для совместной работы с набором других распределенных компонентов. Программное обеспечение для создания круговой диаграммы из набора точек данных является примером Bean, который может выполняться локально. Тем не менее, Bean, который предоставляет информацию о ценах в режиме реального времени из биржевого или товарного обмена, должен работать в сотрудничестве с другим распределенным программным обеспечением для получения своих данных.

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

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

Архитектура программного компонента предоставляет стандартные механизмы для работы с блоками разработки программного обеспечения. В следующем списке перечислены некоторые конкретные преимущества, которые технология Java предоставляет разработчику компонента:

  • A Bean получает все преимущества Java-парадигмы "write-once, run-where".
  • Свойства, события и методы Bean, которые подвергаются действию приложения Инструмент builder можно контролировать.
  • A Bean может быть спроектирован для правильной работы в разных местах, что делает его полезно на глобальных рынках.
  • Дополнительное программное обеспечение может быть предоставлено, чтобы помочь человеку настроить Bean. Это программное обеспечение требуется только тогда, когда устанавливаются параметры времени разработки для этого компонента. Это не требуется включать в среду выполнения.
  • Настройки конфигурации Bean можно сохранить в постоянном хранилище и восстановить в более позднее время.
  • A Bean может регистрироваться для получения событий от других объектов и может генерировать события, которые отправляются другим объектам.

Вот простой пример джавабея:

public class MyBean implements java.io.Serializable
{

       protected  int theValue;

       public MyBean()
       {
       }

       public void setMyValue(int newValue)
       {
           theValue = newValue;
       }

      public int getMyValue()
      {
           return theValue;
      }

}

Это реальный Bean с именем MyBean, который имеет состояние (переменная theValue), которое будет автоматически сохранено и восстановлено механизмом сохранения JavaBeans, и имеет свойство MyValue, которое можно использовать с помощью среды визуального программирования. Этот Bean не имеет визуального представления, но это не является обязательным требованием для компонента JavaBean.