使用AOP拦截注解实现功能

本文介绍了一种自定义注解方法,通过AOP技术实现对特定方法的访问权限控制,确保只有符合指定类型的经销商才能访问。具体实现包括定义自定义注解@DealerTypeToken,并通过@Aspect和@Pointcut等注解来实现前置通知和后置通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义注解:

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 {

}


AOP拦截注解

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
@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
@Aspect 作用是把当前类标识为一个切面供容器读取

@Order Spring 4.2 利用@Order控制配置类的加载顺序




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值