自定义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 { //领头羊
}
在目录下
自定义注解