1確定一個切點
2對這個切點定義一個通知
3,在類上聲明切面
1,確定切點
@Pointcut("execution(public com.lyyh.common.pojo.resp.RespDto<java.util.List<*>> com.lyyh.iotfertilizer.service.impl.*.query*(..))")
public void queryByPageAspect() {
}
當然還有別的方式,例如使用註解確定切點
2,對上面這個切點定義一個通知
/**
* @description 使用環繞通知
*/
@Around("queryByPageAspect()")
public RespDto queryByPage(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if(requestAttributes != null){
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String pageNumStr = request.getParameter("pageNum");
String pageSizeStr = request.getParameter("pageSize");
if(!StringUtils.isEmpty(pageNumStr) && !StringUtils.isEmpty(pageSizeStr)){
try{
int pageNum = Integer.valueOf(pageNumStr);
int pageSize = Integer.valueOf(pageSizeStr);
pageNum = pageNum < 1 ? 1:pageNum;
pageSize = pageSize < 1 ? 10 : pageSize;
PageHelper.startPage(pageNum, pageSize);
RespDto respDto = (RespDto) proceedingJoinPoint.proceed();
if(respDto.getCode() == RespBuilder.success_code){
Page page = (Page)respDto.getData();
if(page != null){
PageInfo pageInfo = new PageInfo(page.getPageNum(),page.getPageSize(),page.getTotal(),page);
respDto.setData(pageInfo);
}
}
return respDto;
}catch (Exception e){
e.printStackTrace();
return RespBuilder.error("分頁查詢發生錯誤",null);
}
}
}
return (RespDto) proceedingJoinPoint.proceed();
}
3,把這個類聲明爲切面,即註冊到aop,
在類上添加 @Aspect @Component兩個註解,
完整代碼如下:
@Aspect
@Component
public class PageAspect {
@Pointcut("execution(public com.lyyh.common.pojo.resp.RespDto<java.util.List<*>> com.lyyh.iotfertilizer.service.impl.*.query*(..))")
public void queryByPageAspect() {
}
/**
* @description 使用環繞通知
*/
@Around("queryByPageAspect()")
public RespDto queryByPage(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if(requestAttributes != null){
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String pageNumStr = request.getParameter("pageNum");
String pageSizeStr = request.getParameter("pageSize");
if(!StringUtils.isEmpty(pageNumStr) && !StringUtils.isEmpty(pageSizeStr)){
try{
int pageNum = Integer.valueOf(pageNumStr);
int pageSize = Integer.valueOf(pageSizeStr);
pageNum = pageNum < 1 ? 1:pageNum;
pageSize = pageSize < 1 ? 10 : pageSize;
PageHelper.startPage(pageNum, pageSize);
RespDto respDto = (RespDto) proceedingJoinPoint.proceed();
if(respDto.getCode() == RespBuilder.success_code){
Page page = (Page)respDto.getData();
if(page != null){
PageInfo pageInfo = new PageInfo(page.getPageNum(),page.getPageSize(),page.getTotal(),page);
respDto.setData(pageInfo);
}
}
return respDto;
}catch (Exception e){
e.printStackTrace();
return RespBuilder.error("分頁查詢發生錯誤",null);
}
}
}
return (RespDto) proceedingJoinPoint.proceed();
}
}