AspectJ使用经验

AspectJ使用经验

1)AspectJ1.2版下载后不要解压,直接双击安装
2)AspectJ5版的语法有了较大变化,请下载AJDT插件进行开发
3)目前的AJDT开发不支持语法提示,在源代码规模较大的情况下,编译较慢,10万行代码,20个pointcut,
编译约2分钟
4)AJDT weave pointcut的方式,是在切点的调用处进行weave,不是在被调方法的前后直接weave,所以在
JSP等非编译地点的调用是不能拦截的。
下面是代码段示例:
/*
* Created on 2005-6-14
*/
package aspectj;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

/**
* @author HongSoft
*
*/
public aspect MonitorAspect {
static {
//PropertyConfigurator.configure("aspectj_log.properties");
}
private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//Log logg = LogFactory.getLog(MonitorAspect.class);
//Logger logg=Logger.getLogger(MonitorAspect.class.getName());
long beginTime=0;
//天气预报
pointcut monitorAspect1(): target(QueryWertherCachedTest)&&call(* getWeatherInfobyCity(String));
//电话
pointcut monitorAspect4():call(*PhoneService.open(String,int,String));

private void before(String str)
{
beginTime=System.currentTimeMillis();
System.out.println("before Aspect:" + str);
//logg.info("开始调用接口"+str+"的时间是:"+sdf.format(new Date())+"\n");
}
private void after(String str)
{
long duration=System.currentTimeMillis()-beginTime;
System.out.println("after Aspect:" + str);
//logg.info("结束调用接口"+str+"的时间是:"+sdf.format(new Date())+"\n该接口调用共耗时"+duration+"毫秒\n");
}

Object around():monitorAspect1(){
before("QueryWertherCached.getWeatherInfobyCity(String))");
try
{
proceed();
}catch(Exception e)
{
e.printStackTrace();
}
after("QueryWertherCached.getWeatherInfobyCity(String))");
return null;
}
void around():monitorAspect4(){
before("PhoneService.open(String,int,String)");
try
{
proceed();
}catch(Exception e)
{
e.printStackTrace();
}
after("PhoneService.open(String,int,String)");
}
}

你可能感兴趣的:(apache,log4j,jsp)