3

次の設定の AOP ベースのログイン機能があります

コンテキスト xml 構成:

<bean id="performanceMonitor" 
class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor" />

<aop:config>
        <aop:pointcut id="allServiceMethods" 
            expression="execution(* com.eshop.sfweb.service.impl..*(..))" /> 
    <aop:pointcut id="allEpServices" 
            expression="execution(* com.service.catalog..*(..))" />
        <aop:advisor pointcut-ref="allServiceMethods" 
            advice-ref="performanceMonitor" order="2" /> 
        <aop:advisor pointcut-ref="allEpServices"
            advice-ref="performanceMonitor" order="2" />
    </aop:config>

Log4j プロパティ:

log4j.logger.org.springframework.aop.interceptor.PerformanceMonitorIntercept
or=${ep.perflog.level},PERFORMANCE 
log4j.appender.PERFORMANCE.File=webAppRoot:WEB-INF/log/performance.log 
log4j.appender.PERFORMANCE.threshold=DEBUG 
log4j.appender.PERFORMANCE=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.PERFORMANCE.DatePattern='.'yyyy-MM-dd 
log4j.appender.PERFORMANCE.layout=org.apache.log4j.PatternLayout 
log4j.appender.PERFORMANCE.layout.ConversionPattern=%d -- %-5p [%t | %F:%L] 
-- %m%n

環境に応じて AOP 呼び出し自体を無効にする方法はありますか? ロギングは非常に簡単に無効にできますが、バックグラウンド プロセスと呼び出し全体を無効/有効にすることはできますか?

説明が必要な場合はお知らせください。

4

2 に答える 2

3

Spring AOP を使用しているため、アスペクトを有効または無効にする簡単な方法の 1 つは、単純に Bean プロファイルを使用することです。

プロファイルを定義しますenableAOP: aop:config を特定のプロファイルの下にある構成ファイルにラップします。

<beans profile="enableAOP">
    <aop:config> <aop:pointcut id="allServiceMethods" 
    expression="execution(* com.eshop.sfweb.service.impl..*(..))" /> 
    <aop:pointcut id="allEpServices" expression="execution(* 
    com.service.catalog..*(..))" />
....
</beans>

ここで、特定の側面を有効にしたい環境が何であれ、enableAOPプロファイルをオンにして実行するだけです。

于 2012-07-26T17:44:13.480 に答える
2

この質問が出されてからしばらく経ちましたが、Spring 2 で思いついたのは次のとおりです。

空の宣言で空の xml ファイル ( aop-context-off.xml) を作成します。<beans>次に、たとえばaop-context-enabled.xmlAOP 宣言を含むファイルを作成します。

最後に、XML をインポートするときに次を使用できます。

<import resource="aop-context-${AOP_CONTEXT_SUFFIX:off}.xml" />

これにより、AOP_CONTEXT_SUFFIX というシステム変数が検索され、見つからない場合は値が強制的にoff.

したがって、上記の例では、に設定AOP_CONTEXT_SUFFIXするenabledことで、aop-context-enabled.xml

したがって、スイッチはシステム変数であるため、サーバーの起動時に簡単に有効/無効にすることができます。

于 2013-07-29T13:33:20.180 に答える