次のパッケージ構造があると仮定しましょう
some.package
|-aaa.private
|-aaa.public
|-bbb.private
|-bbb.public
私のアーキテクチャでは、 からの呼び出しのみを行い、その逆も同様であり、some.package.aaa..*
からの呼び出しのみを行う必要があります。つまり、「メジャー」パッケージの境界 (たとえば、aaa から bbb まで) を横断する場合、他のメジャー パッケージのルートにあるパブリック パッケージの呼び出しのみを許可したいということです。some.package.bbb.public..*
some.package.bbb..*
some.package.aaa.public..*
この規則に違反するすべての Joinpoints を選択する AspectJ Pointcut を定義することは可能ですか? つまり、書きたい場合
declare error: inSomeMajorPackage() && callingNonPublicPackageOfOtherMajorPackage() :
"Please make calls only to public interfaces of other major packages";
このルールを強制するように、これらの 2 つのポイントカットを定義する方法はありますか?