以下程序记录增删改操作
1.目标类LoginService.java
?
public class LogService {
@SuppressWarnings("unchecked")
public void logOption(JoinPoint jp) {
StringBuilder str = new StringBuilder();
str.append("method:" + jp.getSignature().getName() + "\n");
HttpServletRequest request = ServletActionContext.getRequest();
Iterator<Entry<String, Object>> it = request.getParameterMap()
.entrySet().iterator();
boolean isFirst = true;
str.append(" param:");
while (it.hasNext()) {
Entry<String, Object> entry = it.next();
if (isFirst) {
isFirst = false;
} else {
str.append(";");
}
str.append(entry.getKey() + "=");
Object[] allValue = (Object[]) entry.getValue();
for (int i = 0; i < allValue.length; i++) {
if (i != 0) {
str.append(",");
}
str.append(allValue[i].toString());
}
}
System.out.println(str.toString());
}
}
2.在applicationContext.xml进行配置
?
<!-- 目标类 --> <bean id="logService" class="com.iteye.blog.service.LogService"></bean> <!-- 声名式事务 --> <aop:config> <aop:aspect id="myAspect" ref="logService"> <aop:pointcut <!-- 注意:这里要写拦截方法的路径 --> expression="execution(* com.iteye.blog.service.*.save*(..))||execution(* com.iteye.blog.service.*.delete*(..))||com.iteye.blog.service.*.update*(..))" id="logPointCut" /> <aop:after method="logOption" pointcut-ref="logPointCut" /> </aop:aspect> </aop:config>
?注意:建议使用<aop:config proxy-target-class="true" />,使用CGLIB代理类
?