2017-12-24 19 views
0

私はSpring AOPを学ぼうとしています。私はIDEAで簡単なスプリングブートプロジェクトを作成しました。Spring AOPブロックRestController

Service.java

package com.example.demo.service; 
//imports.. 

public interface Service { 
    public DataEntity getData(); 
} 

ServiceImpl.java

package com.example.demo.service; 
//imports.. 
@RestController("service") 
public class ServiceImpl implements Service { 


    @RequestMapping(value="/test", method= RequestMethod.GET) 
    public DataEntity getData() { 
     DataEntity data = new DataEntity(); 
     data.setData("SomeString"); 
     return data; 
    } 
} 

ServiceCallingAspect.java

package com.example.demo.aspects; 
//imports.. 
@Aspect 
@EnableAspectJAutoProxy 
@Component 
public class ServiceCallingAspect { 
    private Log log = LogFactory.getLog(ServiceCallingAspect.class); 

    @AfterReturning("execution(public * com.example.demo.service.*.*(..))") 
    public void logBeforeRestCall(JoinPoint pjp) throws Throwable { 
     log.info(" POST REST call " + pjp); 
    } 
} 

DemoApplication.java

package com.example.demo; 
//.. 

@SpringBootApplication 
public class DemoApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(DemoApplication.class, args); 
    } 
} 

私はhttp://localhost:8080/testに私のRESTサービスを呼び出すしようとするので、私はそのような何かを得ます。

{ 
    "timestamp": 1514109432038, 
    "status": 404, 
    "error": "Not Found", 
    "message": "No message available", 
    "path": "/test" 
} 

私は私の側面(ちょうどServiceCallingAspect.java内のすべての注釈をコメント)サービスが完璧に動作無効にします。私が間違っている場所を私に見せてもらえますか?

+0

URLにアクセスしようとすると、アスペクトが表示されますが、コントローラーがレックしますか?あなたはこれをデバッグしましたか? – pvpkiran

+0

@pvpkiranいいえ、デバッグモードでコントローラに到達できません。 –

答えて

1

@EnableAspectJAutoProxyから@EnableAspectJAutoProxy(proxyTargetClass=true)に変更してください。

@Aspect 
@EnableAspectJAutoProxy(proxyTargetClass=true) 
@Component 
public class ServiceCallingAspect { 
    ..... 

} 
+0

これは正常に動作します、ありがとうございます!どのように動作するのか説明できますか? –

関連する問題