自定义注解:
package com.pbh.aop.api.auto;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
* <p>Title:DealerTypeToken </p>
* <p>Description:用于使用token注解判断Dealer类型权限访问 </p>
* @author PanBaihui
* @time 2017年9月7日 下午3:45:35
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DealerTypeToken {
}
package com.pbh.aop.api.auto;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import com.pbh.config.DealerConfig;
import com.pbh.model.web.Dealer;
import com.pbh.service.web.IDealerService;
import com.pbh.util.AssertUtil;
import com.pbh.util.ThreadUserUtils;
/**
*
* <p>Title:DealerTypeTokenAOP </p>
* <p>Description:拦截使用token注解的经销商访问权限 </p>
* @author PanBaihui
* @time 2017年9月7日 下午5:58:20
*/
@Component
@Aspect
@Order(4)
public class DealerTypeTokenAOP {
Logger logger = LoggerFactory.getLogger(DealerTypeTokenAOP.class);
@Autowired
IDealerService dealerService;
@Pointcut("@annotation(com.pbh.aop.api.auto.DealerTypeToken)")
private void dealerTypeCheck() {};
@Before("dealerTypeCheck()")
public void beforeService(JoinPoint joinPoint) {
Dealer dealer = dealerService.get(ThreadUserUtils.getDealerId());
AssertUtil.isTrue(dealer.getType().equals(DealerConfig.DEALER_TYPE_COMPANY), "请升级为经销商后访问");
}
@After("dealerTypeCheck()")
public void afterService(JoinPoint joinPoint) {
}
}
自定义注解:http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
@Aspect
作用是把当前类标识为一个切面供容器读取
@Order Spring 4.2 利用@Order
控制配置类的加载顺序