Dubbo(五)------Dubbo入门示例(基于api配置)

深藏阁楼爱情的钟 2023-06-25 07:44 62阅读 0赞

在这里插入图片描述

dubbo 父工程pom依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.yi</groupId>
  6. <artifactId>dubbo</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>pom</packaging>
  9. <modules>
  10. <module>dubbo-api</module>
  11. <module>dubbo-consumer</module>
  12. <module>dubbo-provider</module>
  13. </modules>
  14. <properties>
  15. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  16. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  17. <java.version>1.8</java.version>
  18. </properties>
  19. <parent>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-parent</artifactId>
  22. <version>2.1.4.RELEASE</version>
  23. <relativePath/> <!-- lookup parent from repository -->
  24. </parent>
  25. <dependencies>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-web</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-starter-test</artifactId>
  33. <scope>test</scope>
  34. <exclusions>
  35. <exclusion>
  36. <groupId>org.junit.vintage</groupId>
  37. <artifactId>junit-vintage-engine</artifactId>
  38. </exclusion>
  39. </exclusions>
  40. </dependency>
  41. </dependencies>
  42. <build>
  43. <plugins>
  44. <plugin>
  45. <groupId>org.springframework.boot</groupId>
  46. <artifactId>spring-boot-maven-plugin</artifactId>
  47. </plugin>
  48. <!-- JDK版本 -->
  49. <plugin>
  50. <artifactId>maven-compiler-plugin</artifactId>
  51. <configuration>
  52. <source>1.8</source>
  53. <target>1.8</target>
  54. </configuration>
  55. </plugin>
  56. </plugins>
  57. </build>
  58. </project>

dubbo-api 工程
在这里插入图片描述

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.yi</groupId>
  6. <artifactId>dubbo-api</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. <properties>
  9. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  10. </properties>
  11. <build>
  12. <plugins>
  13. <plugin>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-maven-plugin</artifactId>
  16. </plugin>
  17. <!-- JDK版本 -->
  18. <plugin>
  19. <artifactId>maven-compiler-plugin</artifactId>
  20. <configuration>
  21. <source>1.8</source>
  22. <target>1.8</target>
  23. </configuration>
  24. </plugin>
  25. </plugins>
  26. </build>
  27. </project>
  28. package com.yi;
  29. /**
  30. * 接口
  31. */
  32. public interface TestService {
  33. String sayHello(String word);
  34. }

dubbo-provider 工程
在这里插入图片描述

  1. package com.yi.config;
  2. import org.apache.dubbo.config.ApplicationConfig;
  3. import org.apache.dubbo.config.ProtocolConfig;
  4. import org.apache.dubbo.config.RegistryConfig;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. @Configuration
  8. public class ProviderConfig {
  9. @Bean
  10. public ApplicationConfig applicationConfig() {
  11. ApplicationConfig applicationConfig = new ApplicationConfig();
  12. applicationConfig.setName("dubbo-provider");
  13. return applicationConfig;
  14. }
  15. @Bean
  16. public RegistryConfig registryConfig() {
  17. RegistryConfig registryConfig = new RegistryConfig();
  18. registryConfig.setAddress("zookeeper://127.0.0.1:2181");
  19. return registryConfig;
  20. }
  21. @Bean
  22. public ProtocolConfig protocolConfig() {
  23. ProtocolConfig protocolConfig = new ProtocolConfig();
  24. protocolConfig.setName("dubbo");
  25. protocolConfig.setPort(20880);
  26. return protocolConfig;
  27. }
  28. }
  29. package com.yi.service.impl;
  30. import com.yi.TestService;
  31. import org.apache.dubbo.config.annotation.Service;
  32. @Service(version = "1.0.0")
  33. public class TestServiceImpl implements TestService {
  34. @Override
  35. public String sayHello(String word) {
  36. return word;
  37. }
  38. }
  39. package com.yi;
  40. import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
  41. import org.springframework.boot.SpringApplication;
  42. import org.springframework.boot.autoconfigure.SpringBootApplication;
  43. @SpringBootApplication
  44. @DubboComponentScan(basePackages = "com.yi.service.impl")
  45. public class ApplicationProvider {
  46. public static void main(String[] args) {
  47. SpringApplication.run(ApplicationProvider.class, args);
  48. System.out.println("dubbo_provider 已启动!");
  49. }
  50. }
  51. <?xml version="1.0" encoding="UTF-8"?>
  52. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  53. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  54. <modelVersion>4.0.0</modelVersion>
  55. <groupId>com.yi</groupId>
  56. <artifactId>dubbo-provider</artifactId>
  57. <version>0.0.1-SNAPSHOT</version>
  58. <properties>
  59. <java.version>1.8</java.version>
  60. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  61. </properties>
  62. <parent>
  63. <groupId>com.yi</groupId>
  64. <artifactId>dubbo</artifactId>
  65. <version>0.0.1-SNAPSHOT</version>
  66. </parent>
  67. <dependencies>
  68. <!--引入公共的api-->
  69. <dependency>
  70. <groupId>com.yi</groupId>
  71. <artifactId>dubbo-api</artifactId>
  72. <version>1.0-SNAPSHOT</version>
  73. </dependency>
  74. <!--引入springboot-->
  75. <!-- <dependency>
  76. <groupId>org.springframework.boot</groupId>
  77. <artifactId>spring-boot-starter</artifactId>
  78. <version>2.1.0.RELEASE</version>
  79. </dependency>-->
  80. <!--zookeeper 注册中心客户端引入 使用的是curator客户端 -->
  81. <dependency>
  82. <groupId>org.apache.dubbo</groupId>
  83. <artifactId>dubbo-dependencies-zookeeper</artifactId>
  84. <version>2.7.4.1</version>
  85. <type>pom</type>
  86. <exclusions>
  87. <exclusion>
  88. <groupId>org.slf4j</groupId>
  89. <artifactId>slf4j-log4j12</artifactId>
  90. </exclusion>
  91. </exclusions>
  92. </dependency>
  93. <!-- dubbo 2.7.x引入-->
  94. <dependency>
  95. <groupId>org.apache.dubbo</groupId>
  96. <artifactId>dubbo-spring-boot-starter</artifactId>
  97. <version>2.7.4.1</version>
  98. </dependency>
  99. <dependency>
  100. <groupId>org.springframework.boot</groupId>
  101. <artifactId>spring-boot-autoconfigure</artifactId>
  102. <version>2.1.7.RELEASE</version>
  103. <scope>compile</scope>
  104. </dependency>
  105. </dependencies>
  106. <build>
  107. <plugins>
  108. <plugin>
  109. <groupId>org.springframework.boot</groupId>
  110. <artifactId>spring-boot-maven-plugin</artifactId>
  111. </plugin>
  112. </plugins>
  113. </build>
  114. </project>

dubbo-consumer 工程

在这里插入图片描述

  1. package com.yi.config;
  2. import org.apache.dubbo.config.ApplicationConfig;
  3. import org.apache.dubbo.config.RegistryConfig;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. @Configuration
  7. public class ConsumerConfig {
  8. @Bean
  9. public ApplicationConfig applicationConfig() {
  10. ApplicationConfig applicationConfig = new ApplicationConfig();
  11. applicationConfig.setName("dubbo_consumer");
  12. return applicationConfig;
  13. }
  14. @Bean
  15. public RegistryConfig registryConfig() {
  16. RegistryConfig registryConfig = new RegistryConfig();
  17. registryConfig.setAddress("zookeeper://127.0.0.1:2181");
  18. return registryConfig;
  19. }
  20. }
  21. package com.yi.controller;
  22. import com.yi.TestService;
  23. import org.apache.dubbo.config.annotation.Reference;
  24. import org.springframework.web.bind.annotation.GetMapping;
  25. import org.springframework.web.bind.annotation.RestController;
  26. @RestController
  27. public class TestController {
  28. @Reference(version = "1.0.0")
  29. private TestService service;
  30. @GetMapping("sayHello")
  31. public String sayHello() {
  32. return service.sayHello("hello wrold!");
  33. }
  34. }
  35. package com.yi;
  36. import org.springframework.boot.SpringApplication;
  37. import org.springframework.boot.autoconfigure.SpringBootApplication;
  38. @SpringBootApplication
  39. public class ApplicationConsumer {
  40. public static void main(String[] args) {
  41. SpringApplication.run(ApplicationConsumer.class, args);
  42. System.out.println("dubbo_consumer 已启动!");
  43. }
  44. }
  45. <?xml version="1.0" encoding="UTF-8"?>
  46. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  47. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  48. <modelVersion>4.0.0</modelVersion>
  49. <groupId>com.yi</groupId>
  50. <artifactId>dubbo-consumer</artifactId>
  51. <version>0.0.1-SNAPSHOT</version>
  52. <packaging>jar</packaging>
  53. <parent>
  54. <groupId>com.yi</groupId>
  55. <artifactId>dubbo</artifactId>
  56. <version>0.0.1-SNAPSHOT</version>
  57. </parent>
  58. <properties>
  59. <java.version>1.8</java.version>
  60. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  61. </properties>
  62. <dependencies>
  63. <!--引入公共的api-->
  64. <dependency>
  65. <groupId>com.yi</groupId>
  66. <artifactId>dubbo-api</artifactId>
  67. <version>1.0-SNAPSHOT</version>
  68. </dependency>
  69. <!--<!–引入springboot–>
  70. <dependency>
  71. <groupId>org.springframework.boot</groupId>
  72. <artifactId>spring-boot-starter</artifactId>
  73. <version>2.1.0.RELEASE</version>
  74. </dependency>-->
  75. <!--zookeeper 注册中心客户端引入 使用的是curator客户端 -->
  76. <dependency>
  77. <groupId>org.apache.dubbo</groupId>
  78. <artifactId>dubbo-dependencies-zookeeper</artifactId>
  79. <version>2.7.4.1</version>
  80. <type>pom</type>
  81. <exclusions>
  82. <exclusion>
  83. <groupId>org.slf4j</groupId>
  84. <artifactId>slf4j-log4j12</artifactId>
  85. </exclusion>
  86. </exclusions>
  87. </dependency>
  88. <!-- dubbo 2.7.x引入-->
  89. <dependency>
  90. <groupId>org.apache.dubbo</groupId>
  91. <artifactId>dubbo-spring-boot-starter</artifactId>
  92. <version>2.7.4.1</version>
  93. </dependency>
  94. </dependencies>
  95. <build>
  96. <plugins>
  97. <plugin>
  98. <groupId>org.springframework.boot</groupId>
  99. <artifactId>spring-boot-maven-plugin</artifactId>
  100. </plugin>
  101. </plugins>
  102. </build>
  103. </project>

在这里插入图片描述

访问:http://127.0.0.1:8082/sayHello

在这里插入图片描述

项目代码实例下载


如果你觉得本篇文章对你有所帮助的话,麻烦请点击头像右边的关注按钮,谢谢!

技术在交流中进步,知识在分享中传播

发表评论

表情:
评论列表 (有 0 条评论,62人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Dubbo入门

    Dubbo入门 1. 服务容器负责启动,加载,运行服务提供者,这个图上没标识出来,服务端启动就是0. 2. 服务提供者在启动时,向注册中心注册自己提供的服务。 3. 服