这对我来说很漂亮。我认为你的配置中唯一缺少的部分是@ComponentScan。但我相信这将是你的配置类,因此没有打扰太多。 如果你还没有添加@ComponentScan,那根本不会加载你的方面。
这是我的AppConfig类。
@Configuration
@ComponentScan("com.stackoverflow.aopquestion")
@EnableAspectJAutoProxy
public class AppConfig {
}
我的主类
public class ApplicationMain {
public static void main(final String[] args) {
final AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(AppConfig.class);
// appContext.scan("com.stackoverflow.aopquestion");
// appContext.refresh();
final FatalAppExceptionGenerator exGen = (FatalAppExceptionGenerator) appContext
.getBean("fatalappExceptionGenerator");
try {
exGen.throwingFatalApp();
}
catch (final FatalApplicationError e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
}
}
最后我的方面
@Component
@Aspect
public class AnAspect {
@Pointcut(value = "within(com.stackoverflow.aopquestion.*)")
public void allExceptionPointcuts() {
}
@AfterThrowing(value = "allExceptionPointcuts()", throwing = "ex")
public void doCheck(final FatalApplicationError ex) {
System.out.println("Invoked the afterthrowing aspect");
// ex.printStackTrace();
}
@Before(value = "within(com.stackoverflow.aopquestion.FatalAppExceptionGenerator+) && execution(* throwingFatalApp(..))")
public void doValidate(final JoinPoint jp) {
System.out.println("Invoking before advice");
}
}
这里是输出。
Jan 20, 2014 1:31:32 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.spring[email protected]3a6af2fb: startup date [Mon Jan 20 13:31:32 IST 2014]; root of context hierarchy Jan 20, 2014 1:31:32 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in org.s[email protected]418f12dc: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,appConfig,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor,anAspect,fatalappExceptionGenerator,org.springframework.aop.config.internalAutoProxyCreator]; root of factory hierarchy
调用之前建议调用afterthrowing方面
尝试在其中的一个改变参数的名称。从“前”可能是'ex1'? –