石泉十美 2017-07-31 11:21 采纳率: 0%
浏览 4553

SpringBootDubbo集成问题

@Configuration
@ConditionalOnClass(Exporter.class)
@PropertySource(value = "classpath:/dubbo.properties")
public class DubboConfiguration {
@Value("${dubbo.application.name}")
private String applicationName;

@Value("${dubbo.application.logger}")
private String logger;

@Value("${dubbo.registry.protocol}")
private String protocol;

@Value("${dubbo.registry.address}")
private String registryAddress;

@Value("${dubbo.protocol.name}")
private String protocolName;

@Value("${dubbo.protocol.port}")
private int protocolPort;

@Value("${dubbo.protocol.serialization}")
private String protocolSerialization;

@Value("${dubbo.consumer.timeout}")
private int consumerTimeout;

@Value("${dubbo.consumer.retries}")
private int consumerRetries;

/**

  • 设置dubbo扫描包 */ @Bean public static AnnotationBean annotationBean(@Value("${dubbo.annotation.package}") String packageName) { AnnotationBean annotationBean = new AnnotationBean(); annotationBean.setPackage(packageName); return annotationBean; }

/**

  • 注入dubbo上下文 */ @Bean public ApplicationConfig applicationConfig() { // 当前应用配置 ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName(applicationName); applicationConfig.setLogger(logger); return applicationConfig; }

/**

  • 注入dubbo注册中心配置,基于zookeeper */ @Bean public RegistryConfig registryConfig() { // 连接注册中心配置 RegistryConfig registry = new RegistryConfig(); registry.setProtocol(protocol); registry.setAddress(registryAddress); return registry; }

/**

  • 默认基于dubbo协议提供服务 */ @Bean public ProtocolConfig protocolConfig() { // 服务提供者协议配置 ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName(protocolName); protocolConfig.setSerialization(protocolSerialization); protocolConfig.setPort(protocolPort); protocolConfig.setThreads(200); System.out.println("默认protocolConfig:" + protocolConfig.hashCode()); return protocolConfig; }

/**

  • dubbo服务提供 */ @Bean(name = "defaultConsumer") public ConsumerConfig consumerConfig() { ConsumerConfig consumerConfig = new ConsumerConfig(); consumerConfig.setTimeout(consumerTimeout); consumerConfig.setRetries(consumerRetries); return consumerConfig; } }

基于Configuration配置Dubbo服务,在没有加入AOP的时候,正常发布,但是如果dubbo服务类,符合AOP条件,那么会造成SpringBoot启动时,先生成了Proxy,导致
AnnotationBean.isMatchPackage方法检测Bean时,与配置的扫描包路径不符,致使dubbo服务注册被略过,
想用@Order来设置顺序(dubbo服务注册先于AOP代理生成),但并未生效,请问各位大神有没有能帮忙解决的。万分感谢!
图片说明

  • 写回答

1条回答

  • zqbnqsdsmd 2018-06-29 15:45
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示