我正在尝试从BaseRepostitary
文件中拦截所有返回的列表。这样我可以在列表中找到必须使用此decrypt
方法解密的名称。以下是我的方面 class
@Aspect
@Service
public class DecryptionAspect {
@AfterReturning(value = "execution(java.util.List *(..)) "
+ "&& target(org.springframework.stereotype.Repository)) ", returning = "list")
public void decrypt(List list) throws Exception
{
//Do decryption here for the names inside the list
}
}
但是问题是在我的存储库类被命中时,此
decrypt
方法没有触发。所以我的表情有毛病。我知道我可以通过包名称来定位Repository类。但是我有很多存储库类,并且为这些类提供了@Repository
批注。因此,我希望此AOP表达式可以识别存在@Repository
批注的所有类,并拦截存储库类内的所有List项。那么如何重写我的表情。提前致谢! 最佳答案
`@Aspect
@Service
public class DecryptionAspect {
@AfterReturning(value = "execution(java.util.List *(..)) "
+ "&& @target(org.springframework.stereotype.Repository)) ", returning = "list")
public void decrypt(List list) throws Exception
{
//Do decryption here for the names inside the list
}
}`
您应该使用
@target
将目标类与特定注释进行匹配。BaseRepostitary类是否实现某些接口?
我尝试这个,希望能奏效。
@Aspect
@Service
public class TestAop {
@AfterReturning(value = "execution( java.util.List *.queryList*(..)) "
+ " && @target(org.springframework.stereotype.Repository)", returning = "list")
public void decrypt(List list) throws Exception
{
System.out.println("test........."+ list.toString());
//Do decryption here for the names inside the list
}
}
ServiceImpl:
@Repository
public class ServiceImpl implements IService {
@Override
public <T> List<T> queryList(Map<String, Object> paramMap, Class<T> clazz) {
return null;
}
}