github: https://github.com/Athlizo/spring-dubbo-parent
码云: https://git.oschina.net/null_584_3382/spring-dubbo-parent
相关文档:
相关使用介绍:https://my.oschina.net/u/3039671/blog/899226
声明:
1. 这个只是个人研究使用,spring boot 启动dubbo还有很多方法(@ImportResource)
2.这个只是第一版,基本功能已实现(其实底层还是原来的,只是处理了在spring boot启动的时候怎么去加载一些东西),一些扩展和优化还会继续更新
你可以像配置springboot其他属性一样配置dubbo属性
dubbo:
application:
name: lizo
registry:
address: multicast://224.5.6.7:1234
protocol:
name: dubbo
port: 20887
@EnableDubbo
使用这个注解来开启dubbo服务
@SpringBootApplication
@EnableDubbo(basePackages = "com.alibaba.dubbo")
public class Provider {
public static void main(String[] args) throws InterruptedException {
ApplicationContext ctx = new SpringApplicationBuilder()
.sources(Provider.class)
.web(false)
.run(args);
new CountDownLatch(1).await();
}
}
这样就可以使用基于注解的dubbo的rpc调用
api interface :
public interface AddService {
int add(int a, int b);
}
provider bean:
@Service
public class AddServiceImpl implements AddService {
@Override
public int add(int a, int b) {
return a + b;
}
}
consumer bean:
@Component public class ConsumerAction { @Reference private AddService addService; public void add(int a,int b){ System.out.println("ret = " + addService.add(a,b)); } }
dubbo filter
可以像定义一般的spring bean 定义一个dubbo filter
@Bean
ProviderFilter consumerFilter(){
return new ProviderFilter();
}
static class ProviderFilter extends AbstractDubboProviderFilterSupport {
public Result invoke(Invoker<?> invoker, Invocation invocation) {
System.out.println("ProviderFilter");
return invoker.invoke(invocation);
}
}
当然如果你有跟定制化的需求,也可以使用dubbo原生的注解@Activate,只要继承AbstractDubboFilterSupport
@Activate(group = Constants.PROVIDER)
static class CustomFilter extends AbstractDubboFilterSupport {
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
System.out.println("CustomFilter");
return invoker.invoke(invocation);
}
public Filter getDefaultExtension() {
return this;
}
}