以下程序记录增删改操作
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代理类