dubbo 版本: 2.6.1
SPI:https://dubbo.apache.org/zh-cn/docs/source_code_guide/dubbo-spi.html
// ExtensionLoader类中加载默认filter
public class ExtensionLoader<T> {
private static final Logger logger = LoggerFactory.getLogger(ExtensionLoader.class);
private static final String SERVICES_DIRECTORY = "META-INF/services/";
private static final String DUBBO_DIRECTORY = "META-INF/dubbo/";
private static final String DUBBO_INTERNAL_DIRECTORY = DUBBO_DIRECTORY + "internal/";
dubbo会加载DUBBO_INTERNAL_DIRECTORY的配置。
DUBBO_INTERNAL_DIRECTORY目录下存在com.alibaba.dubbo.rpc.Filter的文件
如图的配置文件
所以我们在resource中创建一样的文件覆盖它。
将需要重写的filter覆盖就好。
例如
accesslog=com.XXX.XXXLogFilter
XXXLogFilter
@Activate(group = Constants.PROVIDER, value = Constants.ACCESS_LOG_KEY)
public class AccessLogFilter implements Filter {
public Result invoke(Invoker<?> invoker, Invocation inv) throws RpcException {
}
}
<dubbo:provider accesslog="true" />