2012-07-10 21 views
22

thể trùng lặp:
What's the point of beans?Javabean là gì?

một JavaBean là gì? Cái này được dùng để làm gì? Và một số ví dụ mã là gì? Tôi nghe nói nó được sử dụng cho một cái gì đó để làm với phương pháp getter và setter? Tôi khá bối rối về những gì một hạt java là và nơi bạn thậm chí truy cập nó. Tôi googled nó nhưng không thể tìm thấy một câu trả lời rõ ràng.

+1

FWIW, đây là câu hỏi Stack Overflow đầu tiên xuất hiện khi tôi tìm kiếm thông tin về hạt đậu Java trên Google. Rất hữu ích như một câu hỏi "biển báo". –

Trả lời

39

Java Bean là một lớp Java bình thường có các thuộc tính riêng với phương thức getter và setter công khai.

Hạt Java thường được sử dụng làm lớp trợ giúp.

Ví dụ -

public class User implements java.io.Serializable { 

    private String name; 
    private Integer age; 

    public String getName(){ 
     return this.name; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 

    public Integer getAge(){ 
     return this.age; 
    } 

    public void setAge(Integer age){ 
     this.age = age; 
    } 
} 

Thực hiện Serializable là không bắt buộc nhưng là rất hữu ích nếu bạn muốn kéo dài hoặc chuyển JavaBeans bên ngoài bộ nhớ của Java, ví dụ trong ổ đĩa cứng hoặc qua mạng.

Places where JavaBeans are used?

+3

điều gì về hàm tạo mặc định công khai? –

+0

@IlyaBuziuk Theo [this] (http: // stackoverflow.com/a/2291964/3775798), một hàm tạo mặc định công khai sẽ được tự động cung cấp bởi Java nếu không được xác định rõ ràng. Tôi sẽ làm điều đó có nghĩa là bạn nên an toàn bỏ sót một cho định nghĩa đậu của bạn. –

11

JavaBeans là những thành phần phần mềm tái sử dụng cho Java. Thực tế, chúng là các lớp được viết bằng ngôn ngữ lập trình Java phù hợp với một quy ước cụ thể. Chúng được sử dụng để đóng gói nhiều đối tượng vào một đối tượng duy nhất (bean), để chúng có thể được truyền xung quanh như một đối tượng bean đơn thay vì là nhiều đối tượng riêng lẻ. JavaBean là một đối tượng Java có thể tuần tự hóa, có một hàm tạo 0-đối số và cho phép truy cập vào các thuộc tính bằng cách sử dụng các phương thức getter và setter.

Ưu

  • Một Bean có được tất cả những lợi ích của Java "viết một lần, chạy mọi nơi" mô hình.
  • Các thuộc tính, sự kiện và phương thức của Bean được tiếp xúc với ứng dụng khác có thể được kiểm soát.
  • Phần mềm phụ trợ có thể được cung cấp để giúp định cấu hình Bean.
  • Cài đặt cấu hình của Bean có thể được lưu trong bộ nhớ liên tục và có thể được khôi phục sau.
  • Đậu có thể đăng ký để nhận sự kiện từ các đối tượng khác và có thể tạo sự kiện được gửi tới nó.

Nhược

  • Một lớp với một constructor nullary chịu được khởi tạo trong trạng thái không hợp lệ. Nếu một lớp như vậy được khởi tạo thủ công bởi một nhà phát triển (chứ không phải tự động bởi một số loại khung công tác), nhà phát triển có thể không nhận ra rằng anh ta đã khởi tạo lớp ở trạng thái không hợp lệ. Trình biên dịch không thể phát hiện vấn đề như vậy và ngay cả khi được ghi lại, không có gì đảm bảo rằng nhà phát triển sẽ thấy tài liệu.
  • Có để tạo ra một getter cho mỗi tài sản và một setter cho nhiều, hầu hết, hoặc tất cả chúng, tạo ra một số lượng lớn các mã boilerplate.

Ví dụ:

package beans; 

/** 
* Class <code>PersonBean</code>. 
*/ 
public class PersonBean implements java.io.Serializable { 

    private String name; 

    private boolean deceased; 

    /** No-arg constructor (takes no arguments). */ 
    public PersonBean() { 
    } 

    /** 
    * Property <code>name</code> (note capitalization) readable/writable. 
    */ 
    public String getName() { 
     return this.name; 
    } 

    /** 
    * Setter for property <code>name</code>. 
    * @param name 
    */ 
    public void setName(final String name) { 
     this.name = name; 
    } 

    /** 
    * Getter for property "deceased" 
    * Different syntax for a boolean field (is vs. get) 
    */ 
    public boolean isDeceased() { 
     return this.deceased; 
    } 

    /** 
    * Setter for property <code>deceased</code>. 
    * @param deceased 
    */ 
    public void setDeceased(final boolean deceased) { 
     this.deceased = deceased; 
    } 
} 

tham khảo http://en.wikipedia.org/wiki/JavaBeans

1

Nếu bạn đang nói về java-đậu và KHÔNG EJB Đậu, thì đây là lời giải thích ...

Một JavaBean có một hàm tạo không có đối số.

2. JavaBean có một bộ thuộc tính.

3. Phương thức truy cập JavaBean (phương thức getXxx hoặc isXxx cho thuộc tính Boolean) và phương thức mutator (setXxx) cho phép truy cập vào các thuộc tính cơ bản của nó.

Điểm thứ ba nêu rõ một lớp java có biến cá thể riêng và trình thu thập công khai, setter.

ví dụ:

import java.util.Date; 

public class User { 
    private Date loginDate; 
    private String name; 
    private String password; 

    public User() { } 

    public Date getLoginDate() { 
     return loginDate; 
    } 

    public String getName() { 
     return name; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setLoginDate(Date loginDate) { 
     this.loginDate = loginDate; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public void delete() { 
     // code to delete user from database 
    } 

    public void update() { 
     // code to update user in database 
    } 

    public static User getUser(String name) { 
     // code returning a new User object 
     // populated from the database 
    } 
} 
7

Vâng, API JavaBean định nghĩa một số công ước liên quan đến JavaBeans. Theo Wikipedia:

Các công ước cần thiết như sau:

  • Các lớp phải có một constructor mặc định nào (không có đối số). Điều này cho phép dễ dàng khởi tạo trong các khung chỉnh sửa và kích hoạt.
  • Thuộc tính lớp phải có thể truy cập bằng cách sử dụng get, set, là (được sử dụng cho các thuộc tính boolean thay vì nhận) và các phương thức khác (gọi là phương pháp truy cập và phương pháp mutator), theo quy ước đặt tên tiêu chuẩn . Điều này cho phép kiểm tra và cập nhật trạng thái đậu tự động dễ dàng theo trạng thái trong phạm vi khung, nhiều trong số đó bao gồm các trình chỉnh sửa tùy chỉnh cho các loại thuộc tính khác nhau. Người định cư chỉ được nhận một đối số.
  • Lớp học phải được tuần tự hóa. Nó cho phép các ứng dụng và khung công tác tiết kiệm đáng kể, lưu trữ và khôi phục trạng thái của bean theo kiểu thời trang độc lập với máy ảo và nền tảng.

Thường thì đây là các loại lớp phổ biến nhất có thể tìm thấy trong ứng dụng vì chúng có thể được sử dụng để lập mô hình dữ liệu được sử dụng. Ví dụ về một loại đậu như vậy có thể được nhìn thấy bên dưới:

public class Person implements Serializable 
{ 
    private String name; 
    private boolean alive; 

    public Person() 
    { 
    // constructor logic... 
    } 

    public String getName() 
    { 
    return name; 
    } 

    public void setName(String name) 
    { 
    this.name = name; 
    } 

    public boolean isAlive() 
    { 
    return alive; 
    } 

    public void setAlive(boolean alive) 
    { 
    this.alive = alive; 
    } 
} 

Như bạn có thể thấy, các thuộc tính được phản ánh trong getters và setters.

HTH