1、新建父项目DubboParent
(1)pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.10.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
</dependencies>
</dependencyManagement>
2、新建api项目
(1)com.example.dubbo.service
public interface DemoDubboService {
public String demo(String param);
}
3、新建provider项目
(1)pom.xml
<dependencies>
<dependency>
<artifactId>api</artifactId>
<groupId>com.example</groupId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
</dependency>
</dependencies>
不需要依赖web,如果依赖spring-boot-start-web还需要考虑端口问题。
(2)application.yml
dubbo:
application:
name: dubbo-provider
registry:
address: zookeeper://192.168.1.128:2181
protocol:
port: 20884
(3) com.example.dubbo.service.impl
/*注解是apache的注解
* 区分项目是Provider还是Consumer最重要的依据*/
@Service
public class DemoDubboServiceImpl implements DemoDubboService {
@Override
public String demo(String param) {
System.out.println("执行demo");
return param+" abc";
}
}
(4)com.example
@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class,args);
}
}
必须要有@EnableDubbo注解,否则Dubbo不生效。
4、新建demoConsumer项目
(1)pom.xml
<dependencies>
<dependency>
<artifactId>api</artifactId>
<groupId>com.example</groupId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
</dependency>
</dependencies>
(2)application.yml
dubbo:
application:
name: dubbo-consumer
registry:
address: zookeeper://192.168.1.128:2181
server:
port: 8081
(3) com.example.service层
public interface DemoService {
public String demo();
}
/*注解是spring的注解*/
@Service
public class DemoServiceImpl implements DemoService{
@Reference
private DemoDubboService demoDubboService ;
@Override
public String demo() {
return demoDubboService.demo("嘻嘻嘻");
}
}
调用服务使用@Reference注解,import org.apache.dubbo.config.annotation.Reference;
(4)com.example.controller
@Controller
public class DemoController {
@Autowired
private DemoService demoService ;
@RequestMapping("/demo")
@ResponseBody
public String demo()
{
return demoService.demo();
}
}
(5)com.example
@SpringBootApplication
@EnableDubbo
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}