介绍:现在做的项目,需要通过aop实现添加日志功能,在需要的方法上加注解即可对该方法执行拦截并添加日志
1. 添加相关依赖
<spring.version>4.1.7.RELEASE</spring.version>
<aspectj.version>1.6.8</aspectj.version>
<!—springaop相关—>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<!—aspectj相关—>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
2.编写自定义注解类
package com.sen.log;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log {
/**方法描述*/
public String methodDesc() default "";
}
3.编写日志实体类,用于保存到数据库
package com.sen.pojo;
import java.util.Date;
/**
* ClassName: SystemLog
*
* @Description: 日志实体类
* @author shaosen
* @date 2018年5月9日
*/
public class SystemLog {
/**唯一标识*/
private String id;
/**方法描述*/
private String description;
/**方法名*/
private String method;
/**请求ip*/
private String requestIp;
/**异常code*/
private String exceptioncode;
/**异常描述*/
private String exceptionDetail;
/**创建日期*/
private Date createDate;
/**请求参数*/
private String params;
public String getParams() {
return params;
}
public void setParams(String params) {
this.params = params;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getRequestIp() {
return requestIp;
}
public void setRequestIp(String requestIp) {
this.requestIp = requestIp;
}
public String getExceptioncode() {
return exceptioncode;
}
public void setExceptioncode(String exceptioncode) {
this.exceptioncode = exceptioncode;
}
public String getExceptionDetail() {
return exceptionDetail;
}
public void setExceptionDetail(String exceptionDetail) {
this.exceptionDetail = exceptionDetail;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
@Override
public String toString() {
return "SystemLog [id=" + id + ", description=" + description + ", method=" &#