SpringMVCベースのアプリケーションでアクティビティをログに記録するためにAspectを使用しています。 @ controllerアノテーションを使用して、アプリケーションでコントローラーを定義しています。私は2つの異なるパッケージに2つの異なるコントローラーを持っています
を使用して、コントローラーの特定のパッケージにアスペクトを適用できます。
<aop:config>
<aop:pointcut id="pointcut1"
expression="execution(* package1.*.*(..))"
id="policy1" />
<aop:aspect ref="aspect1" order="1">
<aop:before pointcut-ref="pointcut1" method="before" arg-names="joinPoint" />
<aop:after-returning returning="returnValue" arg-names="joinPoint, returnValue" pointcut-ref="pointcut1" method="after" />
</aop:aspect>
</aop:config>
<bean id="aspect1" class="com......aspectclass" />
私の質問は、expression(* package1。。。(..))**。
現在、パッケージごとに1つの個別のポイントカットを宣言しており、側面では1つの個別のaop:before
およびaop:after
各ポイントカットのエントリ。しかし、これは複数のパッケージのポイントカットを定義するための理想的な方法だと思います。
ブール演算子を使用できます。
expression="execution(* package1.*.*(..)) || execution(* package2.*.*(..))"
使用する場合注釈
@Pointcut("within(com.package1..*) || within(com.package2..*)")
春のブーツで
@Before("execution(* PackageName.Controller.Service.MethodName(..))
||execution(* PackageName.Controller.Service.*.*(..))")