1.jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.添加apo的方法
package com.gdy.springboot1;
import com.gdy.springboot1.domain.User;
import com.gdy.springboot1.domain.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@RestController
@RequestMapping("/user/")
public class UserController {
@Autowired
private User user;
@Autowired
private UserDao userDao;
@RequestMapping("find")
public String getUser(){
return user.toString();
}
/**
* 查找所有用户信息
* @return
*/
@RequestMapping("findAlls")
public List<UserInfo> findAlls(){
return userDao.findAll();
}
/**
* 根据id查找用户信息
* @return
*/
/**
* 现在用户信息
*
* @return
*/
@RequestMapping("addUser")
public UserInfo addUser(@Valid UserInfo userInfo , BindingResult bindResult){
if(bindResult.hasErrors()){
System.out.println(bindResult.getFieldError().getDefaultMessage());
return null;
}
return userDao.save(userInfo);
}
}
3.AOP
package com.gdy.springboot1.aspect;
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;
@Aspect
@Component
public class HttpAspect {
private final static Logger log = LoggerFactory.getLogger(HttpAspect.class);
/**
* 定义切点 controller下的所有方法
*/
@Pointcut("execution(public * com.gdy.springboot1.UserController.*(..))")
public void log(){};
/**
* 方法前执行
* @param joinPoint
*/
@Before("log()")
public void beforLog(JoinPoint joinPoint){
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
log.info("url:{}",request.getRequestURL());
log.info("ip:{}",request.getRemoteHost());
log.info("请求类型:{}",request.getMethod());
log.info("类方法:{}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
log.info("参数:{}"+joinPoint.getArgs());
}
/**
* 方法后执行
*/
@After("log()")
public void afterLog(){
System.out.println("after aop");
}
/**
* 获取方法返回值
*/
@AfterReturning(pointcut = "log()",returning = "object")
public void afterReturning(Object object){
log.info("response:{}",object);
}
}