dubbo的activate机制
前面了解了dubbo的固定扩展点和自适应扩展点,dubbo还提供了activate机制,实现某个SPI接口,并支持配置生效条件
比如filter是dubbo的过滤器,在consumer和provider都会经过filter的过滤。
使用示例
// 不加 @Activate 注解,getActivateExtension() 时不会加载,其他 getExtension() 方法仍可正常加载
public class MetricsProviderFilter implements Filter{}
// 不加任何参数,表示在 getActivateExtension() 时无条件自动返回
@Activate
public class MetricsProviderFilter implements Filter{}
// group 支持 consumer、provider 两个固定值,getActivateExtension() 调用加载扩展点时自动过滤
// provider 表示在提供者端会被加载;consumer 表示在消费者端会被加载
@Activate(group="provider")
public class MetricsProviderFilter implements Filter{}
// URL 参数中有 cache 这个 key 时,调用 getActivateExtension() 才会加载
@Activate(value="cache")
public class MetricsProviderFilter implements Filter{}
// URL 参数中有 cache 这个 key 并且值为 test 时,调用 getActivateExtension() 才会加载
@Activate(value="cache:test")
public class MetricsProviderFilter implements Filter{}
排序同样使用 @Activate 注解设置,以下是使用示例,order 值越小加载优先级越高。
@Activate(order=100)
public class FilterImpl1 implements Filter{}
@Activate(order=200)
public class FilterImpl2 implements Filter{}