pom文件如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.19</version>
</dependency>
java代码如下:
@Aspect
@Component
@Log4j2
public class LogAspect {
ThreadLocal<Long> startTime = new ThreadLocal<Long>();
@Before("execution(public * com.zhoufanshou.controller..*.*(..))")
public void BeforeMethod(JoinPoint point){
log.info("请求类方法:" + point.getSignature()+"-------请求controller开始------");
startTime.set(System.currentTimeMillis());
String[] paramNames = ((CodeSignature) point.getSignature()).getParameterNames();
Object[] paramValues = point.getArgs();
for (int i = 0; i < paramNames.length; i++) {
log.info("请求controller类方法参数:" + paramNames[i] + ":" + paramValues[i]);
}
}
@After("execution(public * com.zhoufanshou.controller..*.*(..))")
public void AfterMethod(JoinPoint joinPoint){
log.info("请求controller方法:{}",joinPoint.getSignature()+"-------请求controller结束--------");
log.info("SPEND TIME : {}" , (System.currentTimeMillis() - startTime.get()));
}
@Around("execution(public * com.zhoufanshou.service.*.*(..))")
public Object AroundMethod(ProceedingJoinPoint point) throws Throwable {
log.info("-------service请求{}开始------" , point.getSignature());
String[] paramNames = ((CodeSignature) point.getSignature()).getParameterNames();
Object[] paramValues = point.getArgs();
for (int i = 0; i < paramNames.length; i++) {
log.info("请求service方法参数:" + paramNames[i] + ":" + paramValues[i]);
}
Object proceed = point.proceed();
log.info("service请求{}结束 <- 【{}】", point.getSignature(),JSON.toJSONString(proceed));
return proceed;
}
}
/**
* @BelongsProject: cloud
* @BelongsPackage: com.zhoufanshou.controller
* @Author: zhoufanshou
* @CreateTime: 2022-11-11 09:57
* @Description: TODO
* @Version: 1.0
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@GetMapping("getUserInfo/{id}")
@ResponseBody
public String getUserInfo(@PathVariable("id") String id){
return userService.getUserInfoById(id);
}
@PostMapping("getUserInfoByUser")
@ResponseBody
public User getUserInfoByUser(@RequestBody User user){
return userService.getUserInfoByUser(user);
}
}
/**
* @BelongsProject: aspectProj
* @BelongsPackage: com.zhoufanshou.pojo.vo
* @Author: zhoufanshou
* @CreateTime: 2022-11-14 10:37
* @Description: TODO
* @Version: 1.0
*/
@Data
public class User {
private String id;
private String name;
private String sex;
}
public interface UserService {
public String getUserInfoById(String id);
public User getUserInfoByUser(User user);
}
/**
* @BelongsProject: cloud
* @BelongsPackage: com.zhoufanshou.service
* @Author: zhoufanshou
* @CreateTime: 2022-11-11 14:22
* @Description: TODO
* @Version: 1.0
*/
@Service
public class UserServiceImpl implements UserService {
@Override
public String getUserInfoById(String id) {
return "zhoufanshou";
}
@Override
public User getUserInfoByUser(User user) {
User user1 = new User();
user1.setSex("男");
user1.setName("周凡首最帅");
user1.setId("1");
return user1;
}
}
post请求:
日志打印如下: