我已经声明了以下建议 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) . AccessControllerAspect
添加一个 bean . 添加的行为
aop:aspectj-autoproxy
是不足够的。这告诉 bean 是
已经是您的应用程序上下文的一部分 如何进行切面,它不会自动包含它们。