AOP

続・DAOはアスペクト?

私の感覚では、AOPはInterceptorです。crosscutting concernも 実現できるという感じです。 なるほど,そういう考え方ですか.割り切りがいいなぁ.(^^; この割り切りの良さがS2のシンプルさにつながっているのでしょうね.自分はちょっと割り切りが足りない…

DAOはアスペクト?

アスペクト続きでもう一つ. 先週EA1がリリースされたS2Dao.恥ずかしながら私はまだ全然触っていないのですが,ドキュメントを見ただけでゾクゾクするすごさがあります. なにがすごいって,DAOの interface さえ用意すれば,実装する必要がないって事.か…

SpringにAspectJを統合

via http://d.hatena.ne.jp/higayasuo/20040630#1088565533 SpringにAspectJを統合 本家のSpringframeworkのメーリングリストにて、ロッドジョンソン氏による、SpringとAspectJの統合についてのメールが流れた。 統合が必要なんだ... どんな作業なんでし…

アサーションのコンパイル(アサーションをアスペクト&メタデータで実装)

Groovyのスクリプトはバイトコードにコンパイルすることができます. GroovyラボのGroovyの埋め込みによると,GroovyClassLoaderを使えばいいみたい. GroovyスクリプトをGroovyClassLoaderに渡すと,GroovyObjectをimplementsしたクラスがダイナミックに作…

事後条件で@pre(アサーションをアスペクト&メタデータで実装)

事後条件では,メソッドが実行した後のあるべき状態(引数や戻り値,自身のフィールドの値など)を記述します. この場合,メソッドが実行する前の状態を参照できないと,うまく表明を記述できない場合があります. そこでEiffelではold,OCLでは@preを指定す…

事前条件を弱める(アサーションをアスペクト&メタデータで実装)

事前・事後条件と継承について,「オブジェクト指向入門(isbn:4756100503)」では次のように解説されています.たぶん(本が手元にないのでうろ覚え). 派生クラスは事前条件を弱めることができる. 派生クラスは事後条件を強めることができる. 例えばあるメ…

引数名(アサーションをアスペクト&メタデータで実装)

事前条件や事後条件では,メソッドの引数にアクセスできます.引数は名前を持っています.ということで当然,事前事後条件からも引数に名前でアクセスしたい!! わけですが,これまた難題. なんせ,リフレクションでは引数の名前を取れませんから,ソース…

アサーションをアスペクト&メタデータで実装

Seasar2でアサーションアスペクトを作るべく コードを読み始めたのです。 yushi_さんがアサーションをアスペクトで実装し、アサーションの定義を Selで書くということをなさってます。 AOPってアイディア次第ですね。 アサーションをアスペクトで実装すると…

Spring Framework 入門記 AOPその16 Advice Type

OO Enkaiに備えて仕事をお休みしたため,いつもより早い時間に入門記です.自宅なので前傾姿勢です.無念だ. 今回は「5.11. Defining new Advice types」です.なんかもう,第5章も終わりですねぇ.感慨深い. Springには,Around advice,Before advice,T…

Spring Framework 入門記 AOPその15 TargetSource

今回は「5.10. Using TargetSources」に進みます.なんか,いつのまにか5章もあと少しみたい? 確かに,Spring AOPの基本的なことは大体分かってきた感じがします.便利なautoproxyも使えるようになってきたし.よし,この調子でがんばるべし! で,今回のTa…

Spring Framework 入門記 AOPその14 Metadata-Driven Autoproxying

前回に引き続きautoproxyです.今回は「5.9.2. Using metadata-driven autoproxying」に進みます. Metadataですよ,メタデータ.C#の,あれ.J2SE1.5(Tiger)で導入される,あれ.あれを先取りしてAOPです.カックイー! ということで,Core Concernのソース…

ThrowsInterceptor

使えないSpringのThrwosAdviceのかわりに,ひがさんが素敵なThrowsInterceptorを作ってくださいました. SpringのThrwosAdviceがどうして使えないのかというと,問題点が二つあるのです. メソッドの再実行ができない. 正確に言えばできなくはないのですが…

Spring Framework 入門記 AOPその13 AutoProxyCreator

今回は「5.7. Creating AOP proxies programmatically with the ProxyFactory」です.ProxyFactoryを使ってAOP Proxyを作る,と.ふむふむ. な,なんですとぉー? 昨日どこにも書いてなーい! って文句を書いたProxyFactoryの使い方が,ちゃんと書いてある…

Spring Framework 入門記 AOPその12 My ProxyFactoryBean

からさわぎでSeasarにノックアウトされたので,今日からSeasar入門記です. 嘘です.ごめんなさい.日記的にはより複雑でより難しくて日本語の情報が少なくて頼るところが少ないSpringの方が何かと好都合なので,これからもSpring入門記です.*1 与太話はと…

Component配下のAspect

「Seasarのからさわぎ」で,参加者から次のような質問が出されました(たぶん). AspectをComponentの下に定義するようになっているが,それでは複数のComponentに対するAspectを定義できないのでは? なるほど.AspectJでは,Aspectはターゲットとなるclass…

Spring Framework 入門記 AOPその11 ProxyFactoryBean再訪

順番だと次は「5.4. Advisors in Spring」なのですが,とても短いので軽ーく.Advisorは,Aspectをモジュール化するもので,たいていはAdviceとPointcutを組み合わせたものです.だそうです.直訳風です.以上! ということで「5.5. Using the ProxyFactoryB…

Spring Framework 入門記 AOPその10 Introduction Advice

おぉ,AOP編も10回目ですか.ほとんど毎日やっているのにあまり進んでいる感じがしませんね.この調子じゃAOP編卒業はGWとか? いつまでたっても先行している皆様方に追いつけなさそうです.無念だ. さて,今回はIntroduction adviceです.このAdviceは,こ…

Spring Framework 入門記 AOPその9 After Returning Advice

前回はなんとも中途半端に終わらせてしまいました.心より恥じる. 気を取り直して今回は,「5.3.2.4. After Returning advice」へ進みます. After Returning adviceは,メソッドJoinpointが例外をスローすることなくリターンした場合に呼び出されるAdvice…

Spring Framework 入門記 AOPその8 Throws Advice

昨日はトラブル騒ぎで入門記を書けませんでした.無念だ.自分が引き起こしたトラブルなんですけどね.心より恥じる. まだまだ続くSpring Framework入門記,今回はThrows Adviceです. Throws adviceは,メソッドJoinpointから例外がスローされた場合に適用…

Spring Framework 入門記 AOPその7 Before Advice

今回はBefore adviceについて学習します. Before adviceは,Joinpointの前に呼び出されるAdviceで,Springで使用できるAdviceの中でももっとも単純なものだそうです. Before adviceを実装するには,MethodBeforeAdviceというinterfaceをimplementsします.…

ネストしたAspect

ひがさんの日記のまねをしてみました. <beans> <bean id="dateTarget" class="java.util.Date"> <constructor-arg type="long"><value>0</value></constructor-arg> </bean> </beans>

Spring Framework 入門記 AOPその6 Interception Around Advice

今回からAdviceを学習します. SpringのAdviceは,ライフサイクルとタイプで分類することができます. ライフサイクルには,次のものがあります. per-class 全てのターゲットオブジェクトを一つのインスタンスで処理するものです. per-instance ターゲット…

Spring Framework 入門記 AOPその5 Pointcutその他

今回は,Pointcutの仕上げとしてSpringが標準で用意してくれているPointcutの実装クラスについて学習します. Static pointcut NameMatchMethodPointcut 「AOP その2」で使用した,Joinpointのメソッド名でマッチングを行うPointcutです.Advisorインタフェ…

Spring Framework 入門記 AOPその4 Dynamic pointcut

引き続きPointcutの学習,今回はDynamic pointcutです. 前回学習したように,Dynamic pointcutはJoinpointであるメソッド呼び出しの際に,毎回Adviceを適用すべきかをチェックすることができるPointcutです.AOP Proxyを作成(Weaving)する時点で役目を終え…

Spring Framework 入門記 AOPその3 Static Pointcut

どうにかというか,ようやくというか,SpringのAOPも感じがつかめてきました.ここからは「Spring Reference Documentation」に従って詳細に理解していきたいと思います. まずは「5.1. Concepts」ですが,ここではAOPの概念について簡単に説明しています.…

Spring Framework 入門記 AOPその2 PointcutとAdvisor

出だしからいきなりつまずいてしまったAOP編,今回はPointcutに挑戦します.独自のAdviceを作るのもいいかな,という考えもあったのですが,作る前にあるものを使うほうが簡単だったり勉強になったりするだろうということで,まずはSpringが用意してくれてい…

AOPの用語

AOP

まさたかさんの[seasar-tutorial]-S13で見かけたAOPの用語が自分の曖昧な理解と微妙に異なっているような気がしたので,AspectJの解説書などで確認してみました.忘れないように書いておきます.というか,間違っていたら指摘してください. Joinpoint プロ…

Spring Framework 入門記 AOPその1 ProxyFactoryBean

さぁ,いよいよ「Chapter 5. Spring AOP: Aspect Oriented Programming with Spring」に突入です.今時のIoCコンテナの目玉とも言える代物ですよね.AOPはAspectJで軽く遊んだことがあるだけで,この手のダイナミック(ランタイム)なAOPは初めてなので,とて…

AspectCookBookのRecipesより

どうというほどのものでもないのですが... PrintlnSwitchRecipe public Aspect PrintlnSwitchAspect { pointcut printCalls() : call(void java.io.PrintStream.println(String)); void around() : printCalls() { if (debugFlag) { proceed(); } } priva…

AspectCookBookのRecipesより

AsynchronousRoutingRecipe public abstract pointcut asyncOperations(); void around() : asyncOperations() { Runnable worker = new Runnable() { public void run() { proceed(); } }; Thread asyncExecutionThread = new Thread(worker); asyncExecuti…