<><br>>ブースター(下)
1689 ワード
アドイン機構
ブースターはブースターを作ってローディングするのではなく、彼も一連の整合規則を経て最終的にフィルタリングされたのです.前の文で大体のことを述べました.springがブースターを探している間、
ブースターはブースターを作ってローディングするのではなく、彼も一連の整合規則を経て最終的にフィルタリングされたのです.前の文で大体のことを述べました.springがブースターを探している間、
AnnotationAwareAspectJAutoProxyCreator
には、すでにコンテナが起動している間に、現在利用可能なすべてのBeanFactoryAspectJAdvisorsBuilder
に基づくブースターがロードされている例がある.このブライダルはどうやって負荷機構がありますか?この中には自動代理と手動代理があります.下記のコードをご覧ください/**
* Check whether the given aspect bean is eligible for auto-proxying.
* If no <aop:include> elements were used then "includePatterns" will be
* {@code null} and all beans are included. If "includePatterns" is non-null,
* then one of the patterns must match.
*/
protected boolean isEligibleAspectBean(String beanName) {
// , xml ,
// @Aspect 。
if (this.includePatterns == null) {
return true;
}
// xml , include aspect
else {
for (Pattern pattern : this.includePatterns) {
if (pattern.matcher(beanName).matches()) {
return true;
}
}
return false;
}
}
上記のブロックが無効になった理由は何ですか?このロード機構の問題です.プロジェクトの前にすでにxmlで指定されていますので、xmlに配置されているaspectを優先的に行っています.sdk定義のキャッシュのカットクラスを搭載していません.だから叶わない.解決策としては、すべての手動で切断面をロードすることです.すべてが自動で発見されて搭載されます.以下のとおりです
二つの面@Aspect
testAspect2
があると、xmlファイルの中で一つを指定したら、もう一つは機能しません.実はこれは変な使い方です.注を使った以上、なぜxmlの中でどのような役割を果たしますか?実際には、多くのコードは移行段階にあります.手動でxml構成に基づくbeanと注釈に基づくbeanはプロジェクトで使用されます.スプリングもこのような方式に対して支持があるからです.だから普段は特に問題はありません.