1、创建日志注解
1.1、日志类型枚举类
import lombok.Getter;
/**
* 日志类型枚举类
*/
@Getter
public enum LogType {
/**
* 登录
*/
login("LoginLog");
/**
* 实现类名称
*/
private final String implClassName;
LogType(String implClassName) {
this.implClassName = implClassName;
}
}
1.2、自定义日志注解
import java.lang.annotation.*;
import com.baige.enums.LogType;
/**
* 自定义日志注解
*
* 注解说明:
* @Documented:文档注解
* @Retention(RetentionPolicy.RUNTIME):生命周期注解,注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在
* @Target({ ElementType.PARAMETER, ElementType.METHOD }):@Target说明了Annotation所修饰的对象范围,ElementType.TYPE:接口、类、枚举、注解,ElementType.METHOD:方法
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({
ElementType.PARAMETER, ElementType.METHOD })
public @interface Log {
/**
* 登录类型
*/
LogType logType();
}
2、利用AOP实现日志切面统一处理
2.1、日志实现类创建工厂
import com.baige.enums.LogType;
import com.baige.util.SpringContextHolder;
import org.springframework.context.ApplicationContext;
/**
* 日志实现类创建工厂
*/
public class LogFactory {
public static ApplicationContext context;
public static IUserLog getInstance(LogType logType) {
return (IUserLog)