SpringMVC 注解aop不生效

首先基础要理解spring配置文件和springmvc配置文件

spring注解不生效可从以下几个方面找原因

1 springmvc的配置文件中只配置扫描@Controller的注解,spring的配置文件扫描除了@Controller的注解的其他的注解

2 检查@Pointcut 的表达式是否正确

3 如果在service层aop 可以生效,controller层不生效,把  添加到到springmvc的配置文件中

 

附上aop 注解代码

@Component
@Aspect
public class LoginAspect {
	private Logger logger=LoggerFactory.getLogger(LoginAspect.class);
	public LoginAspect(){
	}
	@Pointcut("execution(* com.zyc.service..*.*(..))")
	public void point(){}
	@Pointcut("execution(* com.zyc.controller.*.*(..))")
	public void pointcontroller(){}
	
	/**
	 * 配置环绕通知
	 * @param joinPoint
	 * @return
	 * @throws Throwable 
	 */
	@Around("pointcontroller()")
	public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable{
		logger.debug("进入aoparound方法");
		if(checkPass(joinPoint.getSignature().getName())){
				return joinPoint.proceed();
		}
		HttpServletRequest request=getHttpServletRequest();
		String account=request.getParameter("account");
		logger.debug(account);
		return joinPoint.proceed();
	}
	/**
	 * 检查是否需要验证登录
	 * @param method
	 * @return
	 */
	private boolean checkPass(String method){
		switch(method){
		case "login":
			return true;
		case "register":
			return true;
		}
		return false;
	}
	/**
	 * 获取request
	 * @return
	 */
	protected HttpServletRequest getHttpServletRequest(){
		return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
	}
}

springmvc配置文件中主要配置


 
    
    
        
    

spring配置文件中主要配置


  
       
   
  

在以上配置中

proxy-target-class="true" 属于动态代理的方式选择,有兴趣的朋友可以看看其他资料

你可能感兴趣的:(问题搜集,Spring,AOP)