自定义aop,以添加注解的方法为切入点,对目标方法做一层增强
PageXAop代码如下:
package cn.smart.pagex.aop;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Component
@Aspect
@Slf4j
public class PageXAop {
//定义切入点
@Pointcut("@annotation(cn.smart.annotation.PageX)")
public void point(){}
// 环绕通知
@Around("point()")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
log.info("环绕前");
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)(RequestContextHolder.getRequestAttributes());
String pageNum = servletRequestAttributes.getRequest().getParameter("pageNum");
String pageSize = servletRequestAttributes.getRequest().getParameter("pageSize");
if(pageNum != null && pageSize != null){
PageHelper.startPage(Integer.valueOf(pageNum),Integer.valueOf(pageSize));
}
Object result = pjp.proceed();
log.info("环绕后");
return result;
}
}
配置自动配置类
PageXAutoConfiguration代码
package cn.smart.pagex.autoconfiguration;
import cn.smart.pagex.aop.PageXAop;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(PageXAop.class)
//开关
//cn.smart.pagex.enable = true
@ConditionalOnProperty(prefix = "cn.smart.pagex",value = "enable", havingValue = "true", matchIfMissing = true)
public class PageXAutoConfiguration { //领头羊
}
在目录下
自定义注解