compass aspectjによるcontentフィールドの追加
上記を通して
http://nlslzf.iteye.com/admin/blogs/239374
compassをシステムに統合できますが、彼はすべてのpojoにハイライトを提供するフィールドを要求する問題があります.これは私たちが処理しにくい可能性があります.もちろんcontentをtostringメソッドに転送し、aspectjを通じて各pojoにメソッドgetContentを注入し、このメソッドは自動的にtoStringを呼び出します.
コードは次のとおりです.
最後のaspectに重点を置き,まずdeclare parentsコマンドにより,インタフェースをマッチングpojoに注入する.
次にaroundにより呼び出しをブロックし,それを切り込まれたオブジェクトのtoStringメソッドに変換する.
http://nlslzf.iteye.com/admin/blogs/239374
compassをシステムに統合できますが、彼はすべてのpojoにハイライトを提供するフィールドを要求する問題があります.これは私たちが処理しにくい可能性があります.もちろんcontentをtostringメソッドに転送し、aspectjを通じて各pojoにメソッドgetContentを注入し、このメソッドは自動的にtoStringを呼び出します.
コードは次のとおりです.
package com.yyhy.java.search.compass;
public interface Compassable {
public String getContent();
}
package com.yyhy.java.search.compass;
public class DefaultCompassableImpl implements Compassable {
@Override
public String getContent() {
System.out.println("error aop");
return "error aop";
}
}
package com.yyhy.java.search.compass;
import org.aspectj.lang.JoinPoint;
public aspect CompassAOP {
declare parents: com.yyhy.java.GenericCoder.* extends DefaultCompassableImpl;
declare parents: com.yyhy.java.Privilege.* extends DefaultCompassableImpl;
declare parents: com.yyhy.hx.zcdfk.* extends DefaultCompassableImpl;
declare parents: com.yyhy.hx.jgpmk.* extends DefaultCompassableImpl;
declare parents: com.yyhy.log.* extends DefaultCompassableImpl;
declare parents: com.yyhy.hx.zyqlk.* extends DefaultCompassableImpl;
public pointcut compass():execution(* *.getContent(..));
Object around():compass(){
return thisJoinPoint.getThis().toString();
}
}
最後のaspectに重点を置き,まずdeclare parentsコマンドにより,インタフェースをマッチングpojoに注入する.
次にaroundにより呼び出しをブロックし,それを切り込まれたオブジェクトのtoStringメソッドに変換する.