Activate:可以被框架中自动激活加载扩展,此Annotation用于配置扩展被自动激活加载条件。Activate,看起来有点不好理解,它的意思是条件激活,用户通过group和value配置激活条件。被activate注解的扩展点在满足某种条件时会被激活,它一般用来配合filter和Invokelistener,声明他们的使用场景。我们先来看看源码。
首先你对的dubbo的 SPI机制有一定的了解和研究,看完下图再去理解测试案例就很简单了。
接口
@SPI("order1")
public interface ActivateExt1 {
String echo(String msg);
}
对应不同的实现类:
@Activate(group = {"default_group"})
public class ActivateExt1Impl1 implements ActivateExt1 {
public String echo(String msg) {
return msg;
}
}
@Activate(group = {"group1", "group2"})
public class GroupActivateExtImpl implements ActivateExt1 {
public String echo(String msg) {
return msg;
}
}
@Activate(order = 2, group = {"order"})
public class OrderActivateExtImpl1 implements ActivateExt1 {
public String echo(String msg) {
return msg;
}
}
@Activate(order = 1, group = {"order"})
public class OrderActivateExtImpl2 implements ActivateExt1 {
public String echo(String msg) {
return msg;
}
}
@Activate(value = {"value1"}, group = {"value"})
public class ValueActivateExtImpl implements ActivateExt1 {
public String echo(String msg) {
return msg;
}
}
测试案例: