上一小节【Dubbo 之 Spring 直连提供者的使用】讲述了Dubbo与Spring环境整合直连提供者如何实现远程访问,这一小节讲述Dubbo与SpringBoot环境如何整合进行直连访问
1)新建一个项目
下一步:
直至最后完成。然后我们需要创建我们的两个模块,【provider】和【consumer】,依然在我们刚才创建的父工程上右击新建【Module】,创建我们的两个子模块,创建完毕,工程结构如下图:
2)工程结构建造完毕,接下来我们一个模块一个模块的去实现。首先我们实现【provider】模块
2.1)引入dubbo的配置
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2.2)新建我们的接口
public interface ServiceAPI {
String getMessage(String msg);
}
2.3)实现我们的接口,注意添加我们的注解
//将此实现类变为可加载bean
@Component
//此注解意为将此接口暴露出去,对应我们spring环境中配置的<dubbo:service>
@Service(interfaceClass = ServiceAPI.class)
public class ServiceAPIImpl implements ServiceAPI {
@Override
public String getMessage(String msg) {
return "provider-message:"+msg;
}
}
(这里需要注意的是:Service引入的一定是【com.alibaba.dubbo.config.annotation.Service】的注解,不然无法暴露服务)
2.4)配置文件中配置
spring.application.name=dubbo-spring-boot-provider-starter
spring.dubbo.server=true
spring.dubbo.registry=N/A
2.5)启动类添加注解【@EnableDubboConfiguration】
3)provider大功告成,接下来我们去实现我们的【consumer】调用模块
3.1)引入配置
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
3.2)将provider模块中定义的接口拷贝到consumer模块中一份,两者保持路径一致
3.3)配置文件配置,这里比较简单,只是简单配置服务的名称即可达到演示目的
spring.application.name=dubbo-spring-boot-consumer-starter
3.4)启动类添加注解【@EnableDubboConfiguration】
3.5)创建我们调用端具体的调用类
@Component
public class ConsumerImpl {
@Reference(url = "dubbo://localhost:20880")
ServiceAPI serviceAPI;
public String sendMessage(String msg){
return serviceAPI.getMessage(msg);
}
}
3.6)启动主类进行测试
@SpringBootApplication
@EnableDubboConfiguration
public class ConsumerApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConsumerApplication.class, args);
ConsumerImpl consumer=(ConsumerImpl)run.getBean("consumerImpl");
String str = consumer.sendMessage("我是consumer端");
System.out.println(str);
}
}
效果如下:
这样,springboot与dubbo直连环境的搭建就可以了