2014-01-16 2 views
0

메서드가 throw하는 예외 유형에 따라 여러 AfterThrowing 조언 메커니즘을 만들려고합니다. 호출되지 않습니다. 다음은 코드 스 니펫입니다.AfterThrow 예외 유형에 따라 조언

+0

그 중 하나의 매개 변수 이름을 변경해보십시오. ex에서 ex1 일 수 있습니까? –

답변

0

이것은 나를 위해 아름답게 작동합니다. 난 당신의 구성에서 유일하게 누락 된 부분이 @ComponentScan이라고 생각합니다. 하지만 그게 당신의 설정 클래스에 따라서 많은 것을 귀찮게하지 않을 것이라고 믿습니다. @ComponentScan을 추가하지 않으면 aspect가 전혀로드되지 않습니다.

다음은 내 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"); 
    } 

} 

그리고 여기가 출력됩니다. 조언이 afterthrowing 측면을 호출

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 

호출하기 전에

관련 문제