Loading article…
Javaプラットフォームに基づくコンピューティングにおいて、JavaBeans はSun Microsystemsによって開発され、1996 年にJDK 1.1の一部としてリリースされたテクノロジです。
JavaBeans の「Bean」は、1 つ以上のオブジェクトを単一の標準化されたオブジェクト (Bean) にカプセル化するクラスです。この標準化により、Bean をより一般的な方法で処理できるようになり、コードの再利用とイントロスペクションが容易になります。これにより、Bean をソフトウェア コンポーネントとして扱うことができ、初期構成を必要とせず、内部実装の詳細を知らなくても、エディターや IDEで視覚的に操作できます。
標準化の一環として、すべての Bean はシリアル化可能で、引数なしのコンストラクターを持ち、getter メソッドと setter メソッドを使用してプロパティにアクセスできるようにする必要があります。
特徴
- 内省
- イントロスペクションは、Bean を分析してその機能を判断するプロセスです。これは、設計ツールなどの別のアプリケーションがコンポーネントに関する情報を取得できるようにするため、Java Beans 仕様の重要な機能です。
- プロパティ
- プロパティは Bean の状態のサブセットです。プロパティに割り当てられた値によって、そのコンポーネントの動作と外観が決まります。プロパティは setter メソッドによって設定され、getter メソッドによって取得できます。
- カスタマイズ
- カスタマイザーは、特定のコンテキストでコンポーネントを使用するためにプロセスが従う必要があるステップバイステップのガイドを提供できます。
- イベント
- Bean は EventObject EventListener モデルと対話する場合があります。[説明が必要]
- 持続性
- 永続性とは、Bean のプロパティやインスタンス変数の値を含む Bean の現在の状態を不揮発性ストレージに保存し、後で取得する機能です。
- 方法
- Bean は、プロパティをカプセル化するためにアクセサ メソッドを使用する必要があります。Bean は、プロパティへのアクセスに関係のないビジネス ロジック用の他のメソッドを提供できます。
利点
- Bean のプロパティ、イベント、メソッドは別のアプリケーションに公開できます。
- Bean は他のオブジェクトからイベントを受信するように登録でき、それらの他のオブジェクトに送信されるイベントを生成することができます。[引用が必要]
- Bean の設定を支援する補助ソフトウェアを提供することができます。[引用が必要]
- Bean の構成設定は永続ストレージに保存し、復元することができます。[引用が必要]
デメリット
- 引数なしのコンストラクタを持つクラスは、無効な状態でインスタンス化される可能性があります。[1]このようなクラスが開発者によって手動でインスタンス化される場合(何らかのフレームワークによって自動的にインスタンス化される場合ではなく)、開発者はクラスが不適切にインスタンス化されたことに気付かない可能性があります。コンパイラはこのような問題を検出できず、ドキュメント化されていても、開発者がドキュメントを参照する保証はありません。
- JavaBeansは本質的に可変であるため、不変オブジェクトが提供する利点がありません。[1]
- すべてのプロパティに対してゲッターを作成し、それらの多く、ほとんど、またはすべてに対してセッターを作成する必要があると、膨大な量の定型コードが発生する可能性があります。
JavaBeans API
JavaBeans 機能は、パッケージ内の一連のクラスとインターフェースによって提供されますjava.beans。
JavaBean 規約
JavaBeanクラスとして機能するには、オブジェクト クラスはメソッドの命名、構築、および動作に関する特定の規則に従う必要があります。これらの規則により、Java Bean を使用、再利用、置換、および接続できるツールが可能になります。
必要な規則は次のとおりです。
- クラスには、パブリックデフォルト コンストラクター(引数なし) が必要です。これにより、編集およびアクティベーション フレームワーク内で簡単にインスタンス化できます。
- クラスプロパティは、標準の命名規則に従って、get、set、is (ブール プロパティの場合は get の代わりに使用可能)、to 、およびその他のメソッド (いわゆるアクセサー メソッドおよびミューテーター メソッド)を使用してアクセスできる必要があります。これにより、フレームワーク内での Bean 状態の自動検査と更新が容易になり、多くのフレームワークにはさまざまな種類のプロパティ用のカスタム エディターが含まれています。セッターには 1 つ以上の引数を指定できます。
- クラスはシリアル化可能である必要があります。(これにより、アプリケーションとフレームワークは、 VMやプラットフォームに依存しない方法で、Bean の状態を確実に保存、格納、および復元できます。)
コード例
パッケージプレーヤー;
パブリッククラスPersonBeanはjava.io.Serializableを実装します{
/** プロパティ **/
private boolean deceased = false ;
プライベートリストリスト;
/** プロパティ "name"、読み取り/書き込み可能。 */
private String name = null ;
/** 引数なしのコンストラクタ(引数を取りません)。 */
public PersonBean () { }
public List getList () { return list ; } public void setList ( final List list ) { this . list = list ; }
/**
* プロパティ "name" の取得メソッド。
*/
public String getName () { return name ; }
/**
* プロパティ "name" のセッター。
*
* @param value
*/
public void setName ( final String value ) { this . name = value ; }
/**
* プロパティ "deceased" の取得メソッド
* ブール型フィールドの異なる構文 (is と get)
*/
public boolean isDeceased () { return deceased ; }
/**
* プロパティ "deceased" の設定メソッド。
* @param value
*/
public void setDeceased ( boolean value ) { deceased = value ; } }
TestPersonBean.java:
player.PersonBeanをインポートします。
/**
* クラス "TestPersonBean"。
*/
public class TestPersonBean { /** * クラス "PersonBean" のテスター メソッド "main"。 * * @param arguments */ public static void main ( final String [] arguments ) { final PersonBean person = new PersonBean ();
person.setName ( "Bob " ) ; person.setDeceased ( false ) ; person.setList ( new ArrayList ( ) ) ;
//出力: " Bob [alive]" System.out.print ( person.getName ( ) ); System.out.println ( person.isDeceased ( ) ? " [ deceased]" : " [ alive ] " ) ; } }
<jsp:useBean id= "person"クラス= "player.PersonBean"スコープ= "page" /> <jsp:setProperty name= "person"プロパティ= "*" />
<html>
<body>名前: <jsp:getProperty name= "person" property= "name" /><br/>死亡? <jsp:getProperty name= "person" property= "deceased" /><br/> <br/> <form name= "beanTest" method= "POST" action= "testPersonBean.jsp" >名前を入力してください: <input type= "text" name= "name" size= "50" ><br/>オプションを選択してください:
<select name= "deceased" > <option value= "false" >生存</option> <option value= "true" >死亡</option> </select> <input type= "submit" value= "Test the Bean" > </form> </body> </html>
参照
参考文献
- ^ ab Bloch, Joshua (2008). Effective Java (第2版). Addison-Wesley. p. 13. ISBN 978-0-321-35668-0。
外部リンク
- Oracle の JavaBeans チュートリアル
- JavaBeans仕様
