通过上文
[url]http://nlslzf.iteye.com/admin/blogs/239374[/url]
可以将compass集成到系统,但是他有一个问题,他要求所有的pojo都有一个字段来提供给他高亮,这个是我们可能难以处理的,最好的当然是将content转接给tostring方法,然后通过aspectj给每个pojo都注入一个方法getContent,并且该方法自动调用toString
代码如下
重点在最后的aspect上,首先通过declare parents命令,将接口注入到匹配的pojo
然后通过around,拦截调用,将其转换到被切入对象的toString方法上。
[url]http://nlslzf.iteye.com/admin/blogs/239374[/url]
可以将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方法上。