1.maven配置文件
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.10</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.4</version>
</dependency>
2.applicaiton.xml 配置
xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
<aop:aspectj-autoproxy proxy-target-class="true"/>
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.welink.business.sys.SystemLogService;
import com.welink.business.sys.SystemSwitchService;
import com.welink.common.entity.sys.SystemLog;
import com.welink.core.vo.response.ComResponse;
@Aspect
@Component
public class LoginAspect {
@Autowired
private SystemLogService systemLogService;
@Autowired
private SystemSwitchService systemSwithService;
@Around("execution (* com.welink.core.*.*.*(..))")
private Object doAround(ProceedingJoinPoint pjp) throws Throwable {
// Object[] args = pjp.getArgs();//获得请求参数
Long startTime=System.currentTimeMillis();
//调用核心逻辑
Object retVal = pjp.proceed();
if(retVal instanceof ComResponse){
String urlSwith=systemSwithService.getURLString();//需要记录日志的链接
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String ip=request.getRemoteAddr();//请求IP
HttpSession session = request.getSession();
String url = ((String)request.getAttribute("org.springframework.web.servlet.HandlerMapping.bestMatchingPattern")).split("/")[1]; //日志开关控制在模块
if(!StringUtils.isEmpty(urlSwith) && !StringUtils.isEmpty(url) && urlSwith.contains(url)){
url=((String)request.getAttribute("org.springframework.web.servlet.HandlerMapping.bestMatchingPattern")); //获得完整的URL
String username=(String)session.getAttribute("username");//获得登录用户名
Long duration=System.currentTimeMillis()-startTime;//请求总共花费多少毫 秒
if(pjp.getArgs().length>0){
systemLogService.insertLog(new SystemLog(ip, username, pjp.getArgs()[0].toString(), ((ComResponse)retVal).toString(), url, duration));
}
}
}
return retVal;
}
}