「Spring/SpEL」の編集履歴(バックアップ)一覧はこちら
Spring/SpEL - (2012/02/23 (木) 14:11:13) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
-SpELは実行時のオブジェクトグラフのクエリ、操作に使える
-SpELはSpringとは独立して使える
-パーサ:SpelExpressionParser
--parser.parseExpression(...)
-パース結果の表現:Expression
--exp.getValue()
--exp.getValue(clazz)
--exp.getValue(target):オブジェクトが変化する場合
--exp.getValue(context):オブジェクトが変化しない場合
--exp.getValue(target, context):targetが優先
-EvaluationContextインターフェース
--実装:StandardEvaluationContext
--パース対象のルートオブジェクトの指定
--ConstructorResolver,MethodResolver,PropertyAccessorを登録できる
--SpElでは、必要におうじて型変換を行ってくれる。
---ジェネリクスの型情報も解決しくれる。
-ビーン定義での利用
--#{ <expression string> }
--#{ systemProperties['xxx'] }
--#{ <bean参照> }
--アノテーションでのビーンで意義ではフィールド/メソッド/パラメータに@Valueで指定(デフォルト値)
-リテラル式
--String
---シングルクウォートで囲む
--Date
--Numeric
--boolean
--null
--リスト
---{a,b,...}
--配列
---new int[4],new int[]{1,2,3},new int[4][5](多次元配列の初期化はできない)
-プロパティ
--ピリオド(.)でアクセス
-配列、リスト
--要素には[i]でアクセス
-Map
--あるキーxxxの値には['xxx']でアクセス
-メソッドのinvoke
--通常通りの書き方
--コンテキストを使う場合
parser.parseExpression("isMember('Mihajlo Pupin')").getValue(societyContext,Boolean.class);
-Operators
-- =,>,>=,<,<=
-- instanceof
-- matches
-- lt,le,gt,ge,eq,ne
-- div,mod
-- and,or,not
-- +-*/%~
-Assignment
-Types:T()
--Classインスタンスを見つける
--staticメソッドを実行する
--java.langパッケージ以外のクラスはパッケージも指定する
-Constructors:new
-Variables:#var
--StandardEvaluationContext.setVariableで登録
--#this:現在評価しているオブジェクト
--#root:評価対象のルートオブジェクト
-Functions
--ユーザ定義関数を作れる。:#function_nameで利用
--API
StandardEvaluationContext.registerFunction(String name, Method m)
-ビーン参照
--ビーン参照を解決するをBeanResolverオブジェクトを登録
context.setBeanResolver(...);
--SpELでは@fooで参照する
-Ternary Operator
A ? B : C
-Elvis Operator
--a = (a != null ? a : b)の短縮
a?:b
-Safe Navigation operator
--NullPointerException の代わりにnullを返す
a?.b -> null (a=nullの時)
-Collection Selection
--コレクションの要素を選択できる(リスト、マップ)
list.?[selectionExpression]
map.?[selectionExpression] (valueとかkeyとかつかえる)
^[selectionExpression] 最初の要素
$[selectionExpression] 最後の要素
-Collection Projection
--コレクションの要素の一部の情報をつかって、新しいコレクションを得る(リスト、マップ)
col.![projectionExpression]
-SpELは実行時のオブジェクトグラフのクエリ、操作に使える
-SpELはSpringとは独立して使える
-パーサ:SpelExpressionParser
--parser.parseExpression(...)
-パース結果の表現:Expression
--exp.getValue()
--exp.getValue(clazz)
--exp.getValue(target):オブジェクトが変化する場合
--exp.getValue(context):オブジェクトが変化しない場合
--exp.getValue(target, context):targetが優先
-EvaluationContextインターフェース
--実装:StandardEvaluationContext
--パース対象のルートオブジェクトの指定
--ConstructorResolver,MethodResolver,PropertyAccessorを登録できる
--SpElでは、必要におうじて型変換を行ってくれる。
---ジェネリクスの型情報も解決しくれる。
-ビーン定義での利用
--#{ <expression string> }
--#{ systemProperties['xxx'] }
--#{ <bean参照> }
--アノテーションでのビーンで意義ではフィールド/メソッド/パラメータに@Valueで指定(デフォルト値)
-リテラル式
--String
---シングルクウォートで囲む
--Date
--Numeric
--boolean
--null
--リスト
---{a,b,...}
--配列
---new int[4],new int[]{1,2,3},new int[4][5](多次元配列の初期化はできない)
-プロパティ
--ピリオド(.)でアクセス
-配列、リスト
--要素には[i]でアクセス
-Map
--あるキーxxxの値には['xxx']でアクセス
-メソッドのinvoke
--通常通りの書き方
--コンテキストを使う場合
parser.parseExpression("isMember('Mihajlo Pupin')").getValue(societyContext,Boolean.class);
-Operators
-- =,>,>=,<,<=
-- instanceof
-- matches
-- lt,le,gt,ge,eq,ne
-- div,mod
-- and,or,not
-- +-*/%~
-Assignment
-Types:T()
--Classインスタンスを見つける
--staticメソッドを実行する
--java.langパッケージ以外のクラスはパッケージも指定する
-Constructors:new
-Variables:#var
--StandardEvaluationContext.setVariableで登録
--#this:現在評価しているオブジェクト
--#root:評価対象のルートオブジェクト
-Functions
--ユーザ定義関数を作れる。:#function_nameで利用
--API
StandardEvaluationContext.registerFunction(String name, Method m)
-ビーン参照
--ビーン参照を解決するをBeanResolverオブジェクトを登録
context.setBeanResolver(...);
--SpELでは@fooで参照する
-Ternary Operator
A ? B : C
-Elvis Operator
--a = (a != null ? a : b)の短縮
a?:b
-Safe Navigation operator
--NullPointerException の代わりにnullを返す
a?.b -> null (a=nullの時)
-Collection Selection
--コレクションの要素を選択できる(リスト、マップ)
list.?[selectionExpression]
map.?[selectionExpression] (valueとかkeyとかつかえる)
^[selectionExpression] 最初の要素
$[selectionExpression] 最後の要素
-Collection Projection
--コレクションの要素の一部の情報をつかって、新しいコレクションを得る(リスト、マップ)
col.![projectionExpression]
-Expression templating
--式をテンプレートとして扱える。
--変数部分はParserContextクラスで区切り文字を指定する。
parser.parseException("<template>", parserContext)