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

这是方面。

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 "); 
    } 
} 

我的 application-context.xml 有以下标签
<aop:aspectj-autoproxy/> 

我的Dao类如下:
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) { 
    } 
} 

我放了一个断点,但我可以看到它没有激活,我在这里肯定犯了一些愚蠢的错误,但无法弄清楚。 Pl。建议。

请您参考如下方法:

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

  • 如果您正在使用 component-scan , 要么添加 @Component给您的 AccessControllerAspect ,或设置 component-scan要包括的过滤器 @Aspect注释。要设置过滤器,请查看 section 3.10.3 of the Spring documentation (Using filters to customize scanning) .
  • 如果您使用 xml 配置,请为 AccessControllerAspect 添加一个 bean .

  • 添加的行为 aop:aspectj-autoproxy是不足够的。这告诉 bean 是 已经是您的应用程序上下文的一部分 如何进行切面,它不会自动包含它们。


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!