JavaBeans'in kullanıldığı yerler?


172

JavaBean nedir ve neden buna ihtiyacım var? Sınıf ve arayüz yapısıyla tüm uygulamaları oluşturabildiğim için? Neden fasulyeye ihtiyacım var? Ve bana sınıflar ve arayüzler yerine fasulyenin gerekli olduğu bazı örnekler verebilir misiniz?

Lütfen bir fasulyenin temelini aşağıdaki bağlamda açıklayınız:

  • Wep uygulamaları
  • Bağımsız uygulamalar

10
Umarım "Java fasulyeleri" ve "Kurumsal Java Fasulyeleri veya EJB'ler" arasında kafa karıştırmazsınız.
Rahul

53
aslında fasulye kendisi hakkında bilmiyorum o zaman nasıl EJB ile karıştırabilirsiniz .. onunla özel bir şey var ..
Sidharth

Yanıtlar:


178

Genellikle gerçek dünya verilerini temsil ederler. İşte basit bir Javabean örneği:

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);
    }
}

Uygulama Serializablezorunlu değildir, ancak Javabeans'i Java belleğinin dışında, örneğin sabit diskte veya ağ üzerinden devam ettirmek veya aktarmak istiyorsanız çok kullanışlıdır.

Örneğin bir DAO sınıfında , tablonun verilerini veritabanında sakladığınız bir kullanıcı listesi oluşturmak için kullanabilirsiniz 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;

Örneğin bir Servlet sınıfında , veritabanından UI'ye veri aktarmak için kullanabilirsiniz :

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

Örneğin bir JSP sayfası yapabilirsiniz erişmek bunu EL verileri görüntülemek için, Javabean kurallarını izler:

<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>

Mantıklı geliyor? Görüyorsunuz, bu verileri depolamak , aktarmak ve bunlara erişmek için her yerde kullanabileceğiniz bir kural .

Ayrıca bakınız:


11
Hoş bir açıklama ve genellikle bu Serializable Uygulanması
agpt

ama java doc'da Serileştirmeyi Uygulamamız gerektiğinden bahsediyoruz, lütfen açıklığa kavuşturabilir misiniz?
SSP

8
@SSP: 1) javadoc yok. 2) "gerekir"! = "Gerekir".
BalusC

61

Kendilerini fasulye

JavaBeans her yerde, bir kongre ve hemen hemen her biraz daha büyük kütüphane, işleri otomatikleştirmek için bu konvansiyonları kullanıyor. JavaBeans'in kullanılmasının birkaç nedeni:

  • Güzelce serileştiriyorlar.
  • Yansıma kullanılarak somutlaştırılabilir.
  • Aksi takdirde yansıma kullanılarak kolayca kontrol edilebilir.
  • İşletme kodundaki gerçek verileri kapsüllemek için iyi.
  • Ortak sözleşmeler, herkesin fasulyenizi kullanabileceği anlamına gelir.
  • Aslında sistemin farklı bölümleri arasında daha da birlikte çalışabilirlik anlamına gelen POJO'lara çok yakın .

Ayrıca elbette başka bir konu olan ve sade JavaBeans ile karıştırılmaması gereken Enterprise JavaBeans var. Sadece EJB'den bahsetmek istedim: çünkü isimler benzer ve bu ikisini karıştırmak kolay.

Web uygulamalarında fasulye

Web uygulaması bağlamında "normal" JavaBeans'i düşünürseniz, bacaklarınızda ayakkabı giymekten daha mantıklıdırlar. Servlet belirtimi oturumların serileştirilebilir olmasını gerektirdiğinden, verilerinizi oturumda serileştirilebilir bir şey olarak depolamanız gerektiği anlamına gelir - neden o zaman bir fasulye yapmıyorsunuz? Sadece SomeBusinessDataBean'ınızı oturuma atın ve gitmek için iyi, gülünç kolay, şartname uyumlu ve kullanışlı.

JavaBeans, uygulamanızın parçalarını tamamen ayırmanıza yardımcı olduğundan, bu verilerin uygulama çevresinde aktarılması da kolaydır. JavaBeans'ı bir mektup ve uygulamanın çeşitli alt sistemlerini çok büyük bir şirkette departmanlar olarak düşünün: Dept.A, bir veri grubunu Dept.B'ye, Dept.B'ye , verilerin nereden geldiğini bilmiyor, hatta umursamıyor - olması gerektiği gibi ve sadece mektubu açabilir, ondan bir şeyler okuyabilir ve bu verilere dayanarak işini yapabilir.

Bağımsız uygulamalarda fasulye

Aslında yukarıdakiler bağımsız uygulamalar için de geçerlidir, tek fark, web uygulamalarının durum bilgisi olan kullanıcı arayüzlerine sahip olmasından dolayı, UI ile biraz daha fazla karışıklık yapabilmenizdir. . Bu farktan dolayı, bağımsız uygulama ile karışıklık yapmak daha kolaydır, ancak bu başka bir konuya değer ve JavaBeans ile doğrudan ilgili değildir.


50

Fasulye pek bir şey değil, gerçekten. Bir sınıfın "fasulye" olması için gereken tek şey:

  • halka sahip olmak, argüman yapıcı yok
  • serileştirilebilir olmak (Seri veya seri arayüzünü doğrudan veya süper sınıflarından biri aracılığıyla uygulamak).

Bunun için, belirli durumlarda alanların keşfedilebilir olmasını istiyorsanız, sınıfın belirli bir adlandırma kuralına uyan özellikleri için alıcılar ve ayarlayıcılar ekleyebilirsiniz (örneğin, bu sınıfı, nesnenizdeki görsel bir düzenleyiciden sürükleyip bırakabileceğiniz IDE, örneğin).

Doğrudan Sun'dan daha fazla bilgiyi burada bulabilirsiniz .


15

Java Bean, farklı ortamlarda yeniden kullanılabilecek şekilde tasarlanmış bir yazılım bileşenidir. Fasulye kabiliyeti konusunda herhangi bir kısıtlama yoktur. Bir belgenin yazımını denetleme gibi basit bir işlev veya hisse senedi portföyünün performansını tahmin etme gibi karmaşık bir işlev gerçekleştirebilir. Fasulye son kullanıcı tarafından görülebilir. Bunun bir örneği, grafik kullanıcı arayüzündeki bir düğmedir. Fasulye de bir kullanıcı tarafından görülemez. Bir multimedya bilgi akışını gerçek zamanlı olarak çözmek için kullanılan yazılımlar bu tür yapı taşlarına örnektir. Son olarak, bir Bean bir kullanıcının iş istasyonunda bağımsız olarak çalışmak veya bir dizi diğer dağıtılmış bileşenlerle işbirliği içinde çalışmak üzere tasarlanabilir. Bir dizi veri noktasından bir pasta grafik oluşturmak için kullanılan yazılım, yerel olarak çalışabilen bir Bean örneğidir. Ancak,

Bir yazılım geliştiricisinin Java Bean olarak kullanılabilmesi için bir sınıfta hangi belirli değişiklikleri yapması gerektiğini kısa bir süre göreceğiz. Ancak, Java tasarımcılarının amaçlarından biri bu teknolojiyi kullanmayı kolaylaştırmaktı. Bu nedenle, kod değişiklikleri minimaldir.

Java Fasulyesinin Avantajları

Bir yazılım bileşeni mimarisi, yazılım yapı taşlarıyla başa çıkmak için standart mekanizmalar sağlar. Aşağıdaki listede, Java teknolojisinin bir bileşen geliştiricisine sağladığı bazı avantajlar sıralanmaktadır:

  • Bir Bean, Java'nın "bir kez yaz, her yerde çalıştır" paradigmasının tüm avantajlarından yararlanır.
  • Bir uygulama oluşturucu aracına maruz kalan bir Bean'in özellikleri, olayları ve yöntemleri kontrol edilebilir.
  • Bir Bean, farklı pazarlarda doğru çalışacak şekilde tasarlanabilir ve bu da küresel pazarlarda yararlı olmasını sağlar.
  • Bir kişinin Bean'i yapılandırmasına yardımcı olmak için yardımcı yazılım sağlanabilir. Bu yazılıma yalnızca söz konusu bileşenin tasarım zamanı parametreleri ayarlandığında ihtiyaç duyulur. Çalışma zamanı ortamına dahil edilmesi gerekmez.
  • Bir Bean'in yapılandırma ayarları kalıcı depolama alanına kaydedilebilir ve daha sonra geri yüklenebilir.
  • Bir Bean diğer nesnelerden olayları almak için kayıt olabilir ve başka nesnelere gönderilen olaylar oluşturabilir.

İşte basit bir Javabean örneği:

public class MyBean implements java.io.Serializable
{

       protected  int theValue;

       public MyBean()
       {
       }

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

      public int getMyValue()
      {
           return theValue;
      }

}

Bu, JavaBeans kalıcılık mekanizması tarafından otomatik olarak kaydedilecek ve geri yüklenecek bir duruma (değer) olan MyBean adında gerçek bir Bean'dir ve görsel bir programlama ortamı tarafından kullanılabilen MyValue adlı bir özelliğe sahiptir. Bu Bean'in görsel bir temsili yoktur, ancak bu bir JavaBean bileşeni için bir gereklilik değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.