意图:写一个方法拦截器,在方法执行的同时,把用户执行的操作事件记录下来(操作人,操作时间,哪种业务.....)
问题:注入的dao是null,无法执行insert操作
import org.nutz.aop.InterceptorChain;
import org.nutz.aop.MethodInterceptor;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@IocBean
public class EventLogInterceptor implements MethodInterceptor {
@Inject //AnnotationIocLoader根据这个注解来了解类中的字段,具体的注入方式
protected Dao dao;
@Override
public void filter(InterceptorChain chain) throws Throwable {
// TODO Auto-generated method stub
String ServiceName = chain.getCallingObj().getClass().getName();
int loc = ServiceName.indexOf("$");//首先获取字符的位置
ServiceName = ServiceName.substring(0,loc);//再对字符串进行截取,获得想要得到的字符串
String ServiceMethodName = chain.getCallingMethod().getName();
System.out.println("================拦截器中,进行事件记录,向后台事件表写入记录:==============>");
Sql sql = Sqls.create("insert into BLOOD_SYS_EVENT values ('0001','0002')");
dao.execute(sql);
chain.doChain();
}
}