无法获取dubbo目标类名问题

在应用端想拦截dubbo client方法的类名,除了实现dubbo 的Filter外,可以使用@Aspect注解和实现MethodInterceptor 接口。但是消费端proxy必须设置jdk,否则获取到的都是“com.alibaba.dubbo.common.bytecode.proxy0”代理类名。

1.使用@Aspect注解核心代码段

Method method = ((MethodSignature) pjp.getSignature()).getMethod();
Class clazz = method.getDeclaringClass();

ManagerMethodInfo info = new ManagerMethodInfo();
info.setClazz(clazz.getName());
info.setMethod(method.getName());
2.实现MethodInterceptor接口核心代码段
Method method = invocation.getMethod();
Class clazz = method.getDeclaringClass();
ManagerMethodInfo info = new ManagerMethodInfo();
info.setClazz(clazz.getName());
info.setMethod(method.getName());
3.dubbo消费端配置方式-xml方式

4.3.dubbo消费端配置方式-spring boot方式

@Configuration
public class DubboProviderConf {

    @Resource
    private ApplicationConfig applicationConfig;

    @Resource
    private RegistryConfig registryConfig;

    @Bean
    public ReferenceBean verifyCodeService() {
        return getRef(VerifyCodeService.class);
    }

    private  ReferenceBean getRef(Class tClass) {
        return getRef(tClass, 3000);
    }

    private  ReferenceBean getRef(Class tClass, Integer timeout) {
        return getRef(tClass, timeout, 0, true);
    }

    private  ReferenceBean getRefNotCheck(Class tClass, Integer timeout) {
        return getRef(tClass, timeout, 0, false);
    }

    private  ReferenceBean getRef(Class tClass, Integer timeout, Integer retry, boolean check) {
        ReferenceBean config = new ReferenceBean();
        config.setApplication(applicationConfig);
        config.setRegistry(registryConfig);
        config.setCheck(check);
        config.setTimeout(timeout);
        config.setRetries(retry);
        config.setInterface(tClass);
        config.setProxy("jdk");
        return config;
    }

}

 

你可能感兴趣的:(Spring,拦截器,dubbo类名,拦截dubbo类名)