はじめに
雑談
最近では、Xiaoliu6自身がプロジェクトでいくつかの実際の経験に遭遇し、aopに関するいくつかのレコードを記録します。
AOP
最先端のプログラミング、SpringのAOPは、デカップリングのために存在する、AOPは、クラスのグループが同じ動作を共有することができます。OOPでは唯一のクラスから継承し、コードの結合が増加するようにインターフェイスを実装することができ、クラスの統合は、同じクラスに追加されたより多くの動作を防止し、単一の継承することができます、AOPはOOPの欠点を補う。
SpringはAspectJのアノテーション付きファセットプログラミングをサポートしています。
- AspectJによるファセットの宣言
- After、@Before、@Aroundを使用して、インターセプション・ルールで直接パラメータ化できる宣言を定義します。
- ここで、カットポイントの遮断規則の@After、@Before、@Aroundパラメータは、カットポイントを再利用するためには、@PointCut具体的に定義された遮断規則を使用することができますし、@After、@Before、@Aroundパラメータを呼び出します。
- ここで、各遮断対象場所は、接続点
実際、具体的な使い方も非常にシンプルで、シャオルー自身が書いたコードは以下の通りです。
でも、いざ使おうとしたら、いくつか問題がありました。
- 最初に、FeignClientの内部で以下のようなカスタムアノテーションを使いました。
しかし、私は問題を発見した、この方法を行うには、切り取り成功歩くことができますが、カスタムアノテーションのパラメータを取得するための切り取りは、nullされています。
なぜそれは空ですか?それは、@FeignClientこのアノテーションは、Springが強化するために行っていることが判明し、その後、表面をカットし、すでにプロキシクラスですので、このコンテンツを取得することはできません?私はそのような遊びがある行く、行は、その後、別の再生する方法。
シャオLiuliuは方法を考え、私は方法を抽出し、この方法は、私はその後、顔をカットする別の方法ですので、あなたが終了することができ、ハハ、私はそれが完璧だと思います。しかし、これはそうではありません、最終的には、カット側でも入力することはできません。
原因分析
というのも、thisは現在のオブジェクトを表し、現在のオブジェクトが何を知っているかを知るためにControllerの
サービスインプ
現在のオブジェクトは、Javaのオブジェクトであることは明らかであり、呼び出しは春の拡張オブジェクト、唯一の春の拡張オブジェクト、カットする能力だけです。
つまり、このメソッドの呼び出し元であるiPaperServiceは、Spring AOPで拡張されていないオブジェクトのインスタンスだという結論になります。つまり、この問題を解決するには、拡張されたHelloServiceインスタンスで呼び出す方法を見つけることです!
終わり
以上、ちょっとした問題の記録でした。この問題に出くわした小さな子供たちの助けになれば幸いです。
まあ、みんな、上記はこの記事のすべての内容であり、ここの人々がああ、真のファンであることがわかります。
創作するのは簡単なことではありません。皆さんのサポートと評価が、私の創作への最大のモチベーションです!