通知机制
excavator对每次请求都提供了通知机制,在定制框架的时候可以通过预先设定好的4种场景得到通知。 所有的通知都必须实现
com.googlecode.excavator.advice.Advices.Advice
接口,在接口中声名了4中通知场景:before/after/throw/finally,其实对应的就是try...catch...块中的4种块执行顺序。通知分两种方向: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中体现。