SpringBoot-博客项目-项目搭建

1.新建工程

通过Spring Initializr创建
在这里插入图片描述
添加所需依赖在这里插入图片描述
说明:

  • web 基于Spring框架体系的web项目
  • Thymeleaf 前端模板引擎
  • Spring Boot DevTools 热部署
  • SpringData JPA 全自动的ORM框架
  • Mysql Mysql驱动包

2.完善配置 application.yml

spring:
  thymeleaf:
    mode: HTML5
  # 配置数据源
  datasource:
    url: jdbc:mysql://localhost:3306/whlg01?serverTimezone=Asia/Shanghai&characterEnconding=utf-8
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123
  # JPA 的配置
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
# 指定端口
server:
  port: 8090
# 指定日志
logging:
  level:
    root: info
  file:
    path: log/blo

3.AOP 日志管理
定义切面类,实现web层的日志切片
`import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;

@Aspect
@Component
public class LogAspect {
// 日志记录器
private final Logger logger = LoggerFactory.getLogger(this.getClass());

/*
    @Aspect 表示该类是一个切面类
*/

@Pointcut("execution(* com.zhongruan.web.*.*(..))")
public void log() {
    /*
        execution(* com.zhongruan.web.*.*(..))
            * 修饰符
    */
}

@Before("log()")
public void doBefore(JoinPoint joinPoint) {
     System.out.println("-----------doBefore----------");
    // 将 用户访问的url  ip  调用的方法  传递的参数
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();
    String url = request.getRequestURL().toString();
    String ip = request.getRemoteAddr();
    String classMethod = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName();
    Object[] args = joinPoint.getArgs();
    RequestLog requestLog = new RequestLog(url, ip, classMethod, args);
    logger.info("Result: {}", requestLog);
}

@After("log()")
public void doAfter() {
    System.out.println("-----------doAfter----------");
}

@AfterReturning(returning = "result", pointcut = "log()")
public void doAfterReturn(Object result) {
    logger.info("Result:{}", result);
}

private class RequestLog {
    private String url;
    private String ip;
    private String classMethod;
    private Object[] args;

    public RequestLog() {
    }

    public RequestLog(String url, String ip, String classMethod, Object[] args) {
        this.url = url;
        this.ip = ip;
        this.classMethod = classMethod;
        this.args = args;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getClassMethod() {
        return classMethod;
    }

    public void setClassMethod(String classMethod) {
        this.classMethod = classMethod;
    }

    public Object[] getArgs() {
        return args;
    }

    public void setArgs(Object[] args) {
        this.args = args;
    }

    @Override
    public String toString() {
        return "RequestLog{" +
                "url='" + url + '\'' +
                ", ip='" + ip + '\'' +
                ", classMethod='" + classMethod + '\'' +
                ", args=" + Arrays.toString(args) +
                '}';
    }
}

}
`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值