浏览 1602 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-09
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方法上。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |