2012-03-31 1 views
0


私は、sanitizerプラグインからMarkupSanitizerServiceを拡張しています。 私のお礼状を実装しているgetSanitizer()関数をオーバーライドすることはできますか?または、私のサービスクラスの他の関数をMarkupSanitizerServiceからコピーする必要がありますか?事前に
grailsでプラグインサービスを拡張する

おかげ..

+0

カスタム関数を拡張するためにのみ必要です。 –

+0

なぜアプリケーションの起動時にメソッドを置き換えるメタプログラミングを使用していないのですか? –

+0

ヒントトマスのおかげで –

答えて

1

杯の継承は、Javaの継承と同じように動作します。新しい機能にカスタム実装を提供するだけで済みます。

また、メタプログラミングを使うこともできます。

グルーヴィー

http://www.ibm.com/developerworks/java/library/j-pg06239/index.html

メタプログラミングが自分のデータなどの他のプログラム(または自分自身)を書いたり、操作するコンピュータプログラムの書き込みである、またはそれは、コンパイル時に作業の一部を行うことでメタプログラミングの良い記事実行時に実行される時間。多くの場合、プログラマは、すべてのコードを手作業で記述するのと同じ時間で多くの作業を行うことができます。また、再コンパイルせずに新しい状況を効率的に処理するための柔軟性が向上します。

groovy suppliesメタプログラミング技術:コンパイル時メタプログラミング、およびランタイムメタプログラミング。

あなたはアプリをGrailsのサービスを拡張して、自分の中に消毒剤のサービスの名前を上書きするだろう取るために

def grailsApplication 

def init = { servletContext -> 
    soSomethingWithAService() 
} 

def destroy = { 
} 

private def doSomethingWithAService() { 
grailsApplication.serviceClasses.each { serviceClass -> 
     // do something 
     def result 
     return result 

    } 
    } 
} 
} 
+0

これは本当に良いアプローチです。私はサービスを拡張してしまいましたが、このサービスを使用してコードを変更する必要はありません。どうもありがとう。 –

0

別のルートを動作するはずブートストラップ呼び出しで、次のような何かを行うことができます/config/spring/resources.groovyこれは望ましい効果があるはずです。

関連する問題