springboot整合dubbo

Dear 丶 2022-05-19 10:43 376阅读 0赞

一、创建三个工程:api(jar)、service(jar)、test(war)。

70

二、img-api:

70 1

  1. package com.demo.service;
  2. import java.util.List;
  3. import com.demo.module.Img;
  4. public interface ImgService {
  5. List<Img> selectAll();
  6. }

三、img-service:

  1. ![70 2][]

1、首先pom加上依赖:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.demo</groupId>
  5. <artifactId>img-service</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <!-- springBoot -->
  8. <parent>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-parent</artifactId>
  11. <version>1.4.1.RELEASE</version>
  12. </parent>
  13. <dependencies>
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-web</artifactId>
  17. </dependency>
  18. <!-- api -->
  19. <dependency>
  20. <groupId>com.demo</groupId>
  21. <artifactId>img-api</artifactId>
  22. <version>0.0.1-SNAPSHOT</version>
  23. </dependency>
  24. <!-- mybatis -->
  25. <dependency>
  26. <groupId>org.mybatis.spring.boot</groupId>
  27. <artifactId>mybatis-spring-boot-starter</artifactId>
  28. <version>1.1.1</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>mysql</groupId>
  32. <artifactId>mysql-connector-java</artifactId>
  33. <version>5.1.21</version>
  34. </dependency>
  35. <!-- dubbo -->
  36. <dependency>
  37. <groupId>com.alibaba.spring.boot</groupId>
  38. <artifactId>dubbo-spring-boot-starter</artifactId>
  39. <version>2.0.0</version>
  40. </dependency>
  41. </dependencies>
  42. </project>

2、实现:

  1. package com.demo.serviceImpl;
  2. import java.util.List;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import com.demo.mapper.ImgMapper;
  6. import com.demo.module.Img;
  7. import com.demo.service.ImgService;
  8. @Service("imgService")
  9. public class ImgServiceImpl implements ImgService{
  10. @Autowired
  11. private ImgMapper imgMapper;
  12. @Override
  13. public List<Img> selectAll() {
  14. return imgMapper.selectAll();
  15. }
  16. }

3、properties配置数据库和Mybatis:

  1. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306/aaa?useUnicode=true&characterEncoding=utf-8&useSSL=false
  3. spring.datasource.username=root
  4. spring.datasource.password=wtyy
  5. mybatis.mapper-locations=classpath*:mapper/*Mapper.xml
  6. #spring.dubbo.application.name=img-service
  7. #spring.dubbo.registry.address=zookeeper://127.0.0.1
  8. #spring.dubbo.registry.port=2181
  9. #spring.dubbo.base-package=com.demo.serviceImpl
  10. #spring.dubbo.protocol.name=dubbo
  11. server.port=8081

4、dubbo配置文件provider.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://code.alibabatech.com/schema/dubbo
  7. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  8. <!-- 服务应用名称 -->
  9. <dubbo:application name="img-service"/>
  10. <!-- 使用zookeeper做为注册中心 -->
  11. <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" register="false"/>
  12. <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
  13. <!-- 用dubbo协议在20880端口暴露服务 -->
  14. <dubbo:protocol name="dubbo" port="20881" />
  15. <!-- ref中的值要跟服务实现类中的@Server的值一致 -->
  16. <dubbo:service interface="com.demo.service.ImgService" ref="imgService"></dubbo:service>
  17. </beans>

5、启动类:

  1. package com.demo;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.context.annotation.ImportResource;
  6. import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;
  7. import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
  8. @SpringBootApplication
  9. @MapperScan("com.demo.mapper")
  10. @ImportResource("classpath:provider.xml")
  11. public class ServiceStart {
  12. public static void main(String[] args) {
  13. SpringApplication.run(ServiceStart.class, args);
  14. }
  15. }

四、img-test应用:

  1. ![70 3][]

1、添加pom依赖:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.demo</groupId>
  4. <artifactId>img-test</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <packaging>war</packaging>
  7. <!-- springBoot -->
  8. <parent>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-parent</artifactId>
  11. <version>1.4.1.RELEASE</version>
  12. </parent>
  13. <dependencies>
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-web</artifactId>
  17. </dependency>
  18. <!-- api -->
  19. <dependency>
  20. <groupId>com.demo</groupId>
  21. <artifactId>img-api</artifactId>
  22. <version>0.0.1-SNAPSHOT</version>
  23. </dependency>
  24. <!-- dubbo -->
  25. <dependency>
  26. <groupId>com.alibaba.spring.boot</groupId>
  27. <artifactId>dubbo-spring-boot-starter</artifactId>
  28. <version>2.0.0</version>
  29. </dependency>
  30. </dependencies>
  31. </project>

2、properties配置文件:

  1. #spring.dubbo.application.name=img-test
  2. #spring.dubbo.registry.address=zookeeper://127.0.0.1
  3. #spring.dubbo.registry.port=2181
  4. #spring.dubbo.base-package=com.demo.service
  5. #spring.dubbo.protocol.name=dubbo
  6. server.port=8888

配置port是防止先启动service再启动rest出现端口占用问题,但有时候只配port会报错:

70 4

解决方法是加上数据库的配置(虽然没有用,但是不报错了):

  1. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306/aaa?useUnicode=true&characterEncoding=utf-8&useSSL=false
  3. spring.datasource.username=root
  4. spring.datasource.password=wtyy

3、dubbo配置文件consumer.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://code.alibabatech.com/schema/dubbo
  7. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  8. <dubbo:application name="img-test"></dubbo:application>
  9. <!-- zookeeper作为注册中心 -->
  10. <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
  11. <!-- 生成远程服务代理 -->
  12. <dubbo:reference interface="com.demo.service.ImgService" id="imgService"
  13. url="dubbo://127.0.0.1:20881"/>
  14. </beans>

4、启动类:

  1. package com.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.ImportResource;
  5. import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;
  6. import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
  7. @SpringBootApplication
  8. @EnableDubboConfiguration
  9. @ImportResource("classpath:consumer.xml")
  10. public class RestStart {
  11. public static void main(String[] args) {
  12. SpringApplication.run(RestStart.class, args);
  13. }
  14. }

*******************************************************************************************************************************************

先启动service,再启动test,运行如下:

70 5

发表评论

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

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

相关阅读

    相关 SpringBoot整合Dubbo

    Dubbo简介 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分业务的架构,使用这种方式可以使各个业务之间解耦合(或者最大限度地松耦合)。 简单来说

    相关 SpringBoot整合dubbo

    SpringBoot整合dubbo Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框

    相关 springboot整合dubbo

    本文主要通过代码示例来说明springboot和dubbo的整合方式 以下是核心代码示例,其他的资源整合配置和spring+Dubbo相同 声明下:dubbo网址在下面配

    相关 SpringBoot整合Dubbo

    前言   Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。   简单来说,Dubbo 用于分布式的场景。

    相关 SpringBoot整合dubbo

    1.什么是Dubbo Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服