2012-01-18 8 views
1

Springコントローラのメソッドを前提として、 "before"ハンドラを実行したいと思います。私はそれを行うためにいくつかのAspectJコードを試しましたが、私はそれを解決することはできません。私が望むのは、対象のMethodオブジェクトを取得して、そのAnnotationを処理できるようにすることです。出来ますか?どうやって?Springコントローラの各メソッドの前にAOPでいくつかのコードを実行し、Methodオブジェクトを持つ方法

答えて

0

'MethodBeforeAdvice'インターフェイスを実装し、そのクラスのbefore()メソッドを上書きして、必要なロジックを実装できるクラスを作成します。

さらに、Spring XMLファイルのorg.springframework.aop.support.RegexpMethodPointcutAdvisorのプロパティとしてカスタムクラスを指定します。

ex: 
    <bean id="methodAuthzAdvice" class="com.src.customClassMethodBeforeAdvice"/> 
    <bean id="methodAuthzAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> 
     <ref local="methodAuthzAdvice"/> 
      <property name="advice"> 
       <ref local="methodAuthzAdvice"/> 
      </property>  
        <property name="pattern"> 
       <value>.*</value> 
      </property> 
     </bean> 

methodAuthzAdvice idをxmlファイルのハンドラクラスのインターセプタプロパティとして使用します。

+0

私は注釈付きコントローラを使用しています(したがって、それらは私のXMLにはありません)。すべてのコントローラのインターセプタを設定するにはどうすればいいですか?(すべてリストすることなく) – gotch4

+0

クラスレベルでインターセプタの注釈を指定できます。 [例:@Interceptors({methodAuthzAdvice.class})public class foo {public void dosomething(){...}}] –

関連する問題