Spring 建议不要在春季AOP中被调用

Spring 建议不要在春季AOP中被调用,spring,spring-aop,Spring,Spring Aop,我已经声明了建议dao调用的以下方面,我正在尝试运行@Before advice,但它不起作用 这是一个方面 package com.hedgebenefits.aop; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public class AccessControlAspect { @Before("within(com.hedgebenef

我已经声明了建议dao调用的以下方面,我正在尝试运行@Before advice,但它不起作用

这是一个方面

package com.hedgebenefits.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class AccessControlAspect {
    @Before("within(com.hedgebenefits.daos..*) && execution(public * *(..))")
    public void daoCall() {
        System.out.println("Before advice invoked for DAO method called ");
    }
}
My application-context.xml具有以下标记

<aop:aspectj-autoproxy/>

我放了一个断点,但我可以看到它不是活动的,我肯定在这里犯了一些愚蠢的错误,但无法理解。建议。

您的方面需要成为应用程序上下文的一部分

  • 如果您正在使用
    组件扫描
    ,请将
    @组件
    添加到
    访问控制透视
    ,或设置
    组件扫描
    过滤器以包含
    @方面
    注释。要设置过滤器,请查看
  • 如果您使用的是xml配置,请为
    AccessControllerAspect
    添加一个bean
  • 添加
    aop:aspectj autoproxy
    是不够的。这会告诉已经是应用程序上下文一部分的bean如何进行aspecting,它不会自动包含它们

    package com.hedgebenefits.daos.impl;
    
    import com.hedgebenefits.daos.AdminDao;
    import com.hedgebenefits.domain.Admin;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class AdminDaoImpl implements AdminDao{
        @Override
        public void save(Admin admin) {
        }
    }