Dubbo隐式参数


import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.i18n.LocaleContextHolder;

import java.util.Locale;

/**
 * @className: DubboContextLanguageFilter
 * @description:
 * @author: feiliang
 * @create: 2020-04-27 11:46
 **/
@Activate(group = Constants.PROVIDER)
public class DubboContextLanguageFilter implements Filter {
    private final Logger log = LoggerFactory.getLogger(this.getClass());

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        try {
            // 处理你所想要的逻辑
            String language = RpcContext.getContext().getAttachment("session:org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE");
            if ("en".equals(language)) {
                LocaleContextHolder.setDefaultLocale(new Locale("en", "US"));
            } else {
                LocaleContextHolder.setDefaultLocale(new Locale("zh", "CN"));
            }
        } catch (Throwable t) {
            log.error("[DubboContextEnterFilter - invoke - language fail] 获取并设置language失败!", t);
        }

        return invoker.invoke(invocation);
    }
}

在META-INF下新建一个dubbo文件夹,在dubbo文件夹内创建一个com.alibaba.dubbo.rpc.Filter文件
s

DubboContextLanguageFilter=com.xxx.infrastructure.filter.DubboContextLanguageFilter

文章作者: Adbo
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Adbo !
评论
  目录