Export to GitHub

excavator - Advice.wiki


通知机制

excavator对每次请求都提供了通知机制,在定制框架的时候可以通过预先设定好的4种场景得到通知。 所有的通知都必须实现com.googlecode.excavator.advice.Advices.Advice接口,在接口中声名了4中通知场景:before/after/throw/finally,其实对应的就是try...catch...块中的4种块执行顺序。 http://dl.iteye.com/upload/attachment/0071/1110/e5f5a17b-a312-3031-aae9-2541181885bc.png

通知分两种方向:CONSUMER与PROVIDER。通过Direction的Annotation进行声明。默认是两个方向都需要通知 // 声明为仅接收provider端的通知 @Direction(types=Direction.Type.PROVIDER) public class LogAdvice implements Advice { ... } 在通知生效之前,必须到Advices中进行注册 Advices.register(new LogAdvice()); 这样通知将会在excavator运行的过程中进行生效。我们可以通过通知机制对excavator框架的功能进行扩展,比如日志统计分析、ThreadLocal的清理甚至实现流控策略等等,就看大家怎么发挥了。

通知时会将当前环境信息封装到Runtimes.Runtime的对象中,可以在通知中感知当前的环境信息。excavator内部已经有了3个通知的实现,他们分别是: * RuntimeAdvice * MonitorAdvice * ProfilerAdvice 这三种不同的通知所实现的通过会在各自的wiki中体现。