答案 0 :(得分:1)
“我有aspectjrt-1.5.4.jar,aspectjweaver-1.6.1.jar”可能是你的问题。除了可能彼此不兼容外,它们都是非常古老的版本。您应升级到aspectjweaver的1.6.10版本并删除aspectjrt - aspectjweaver已包含其中的所有类。
答案 1 :(得分:0)
据我所知,切入点的正确定义应如下所示
@AfterThrowing(pointcut = "execution(* com.company..*(..))", throwing = "exception")
public void logException(Throwable exception)
{
System.out.println(exception.getMessage());
}
请注意投掷应包含您在方法本身中绑定的参数名称(在本例中为 exception )。
虽然我没有看到它与异常有什么关系,但这可能是根本原因。
答案 2 :(得分:0)
我试图将建议应用于不是Spring bean的Struts操作。我修改了下面的方法,它开始工作。
@AfterThrowing(pointcut = "execution( * com.company..*(..)) and !execution( * com.company.*.action..*(..))", throwing = "throwable")
public void logException(JoinPoint joinPoint,Throwable throwable)
{
Logger logger = Logger.getLogger(joinPoint.getTarget().getClass());
String className = joinPoint.getTarget().getClass().getCanonicalName();
logger.error(className + " :: " + joinPoint.getSignature().getName() + " :: " + "Exception", throwable);
}
牢记上述内容,我想知道使用* com.company..*(..)
总是一个坏主意。
而是通过应用服务,业务,数据访问等特定包来保持其具体。