קונבנציות של JavaBeans
על מנת לתפקד כ-JavaBean, המחלקה חייבת להיבנות לפי מספר קונבנציות (מוסכמות) הנוגעות למתן השמות למתודות, יצירת מופעים והתנהגות. קונבנציות אלו מאפשרות יצירת כלים אשר יכולים להשתמש ב-JavaBeans, להחליף ביניהם, לחבר ביניהם וכדומה.
JavaBean היא מחלקת ג'אווה העונה על שלוש הדרישות הבאות:
- האובייקט ניתן לסריאליזציה (המחלקה מממשת את הממשק
Serializable). זה מאפשר ליישומים חיצוניים ולתשתיות תוכנה (frameworks) לשמור, לאחסן ולשחזר את המצב של ה-bean בצורה אמינה, ללא תלות במכונה הווירטואלית והפלטפורמה. - למחלקה יש בנאי שאינו מקבל ארגומנטים (no arguments constructor). דבר זה מאפשר יצירה והפעלה פשוטים של מופעים של המחלקה באמצעות תשתיות תוכנה.
- קיימת גישה למשתני המחלקה (properties) באמצעות מתודות get ו-set (מתודות mutator). למתודות אלה ניתנים שמות העונים על קונבנציה סטנדרטית למתן שמות. לדוגמה, עבור משתנה מחלקה בשם
nameייווצרו המתודותgetNameו-setName. למשתני מחלקה מטיפוסboolean, מתודת ה-getמוחלפת במתודה המתחילה ב-is. לדוגמה, עבור משתנה מחלקה בשםemptyמטיפוסbooleanתהיה קיימת המתודהisEmpty. השמות עבור מתודותsetאינם משתנים עבור משתנים בוליאניים. מתודותsetחייבות לקבל רק ארגומנט אחד. כללים אלה מאפשרים בדיקה ועדכון אוטומטיים פשוטים של מצב ה-bean באמצעות תשתיות תוכנה, שרבות מהן כוללות מנגנונים משלהן לעדכון משתני מחלקה מטיפוסים שונים.
דוגמה ל-JavaBean
PersonBean.java:package beans; import java.io.*; /** * Class <code>PersonBean</code>. */ public class PersonBean implements 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; } }
TestPersonBean.java:import beans.PersonBean; /** * Class <code>TestPersonBean</code>. */ public class TestPersonBean { /** * Tester method <code>main</code> for class <code>PersonBean</code>. * @param args */ public static void main(String[] args) { PersonBean person = new PersonBean(); person.setName("Bob"); person.setDeceased(false); // Output: "Bob [alive]" System.out.print(person.getName()); System.out.println(person.isDeceased() ? " [deceased]" : " [alive]"); } }
testPersonBean.jsp:<% // Use of PersonBean in a JSP. %> <jsp:useBean id="person" class="beans.PersonBean" scope="page"/> <jsp:setProperty name="person" property="*"/> <html> <body> Name: <jsp:getProperty name="person" property="name"/><br/> Deceased? <jsp:getProperty name="person" property="deceased"/><br/> <br/> <form name="beanTest" method="POST" action="testPersonBean.jsp"> Enter a name: <input type="text" name="name" size="50"><br/> Choose an option: <select name="deceased"> <option value="false">Alive</option> <option value="true">Dead</option> </select> <input type="submit" value="Test the Bean"> </form> </body> </html>
קישורים חיצוניים
- אתר האינטרנט הרשמי של JavaBeans
- המדריך הרשמי ל-JavaBeans באתר של Oracle (באנגלית)