Spring AOP 对(增删改)操作记录日志
以下程序记录增删改操作
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" 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-/>,使用CGLIB代理类
?