Spring Boot工程应用篇(五)整合Dubbo

10. Spring Boot 整合Dubbo

10.1 步骤总结

(1) 服务提供者工程

  • 添加各种依赖
  • 在启动类上添加@EnableDubboConfiguration 注解,开启 Dubbo 自动配置
  • 修改配置文件
  • 在启动类上添加@EnableTransactionManagement 注解,开启 Dubbo 自定义的事务管理器
    在这里插入图片描述
    一定要加这个注解,dubbo的事务管理器是自己实现的,如果不开启事务管理器,相当于这个dubbo应用没有完全启动
  • 在 Service 实现类上添加阿里的@Service 注解,及@Component 注解

(2) 服务消费者工程

  • 添加各种依赖
  • 在启动类上添加@EnableDubboConfiguration 注解,开启 Dubbo 自动配置
  • 修改配置文件
  • 在处理器的 Service 成员变量上添加@Reference 注解,删除@Autowired 注解

10.2 定义 commons 工程 11-dubboCommons

(1) 创建工程

这里就创建一个普通的 Maven 的 Java 工程,并命名为 11-dubboCommons。

(2) 定义 pom 文件

<groupId>com.abc</groupId>
<artifactId>11-dubboCommons</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<maven.compiler.source>1.8</maven.compiler.source>
	<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.18.2</version>
		<scope>provided</scope>
	</dependency>
</dependencies>

(3) 定义实体类
在这里插入图片描述

(4) 定义业务接口
在这里插入图片描述

(5) 将工程安装到本地库

运行 Maven 的 install 命令,将工程安装到本地版本库,以备其它工程使用。

10.3 定义提供者 11-provider-springboot

(1) 创建工程

复制工程应用篇(四) 里Redis的工程,并重命名为 11-provider-springboot。

扫描二维码关注公众号,回复: 11896898 查看本文章

(2) 定义 pom 文件

A、添加 dubbo 与 spring boot 整合依赖
B、 添加 zkClient 依赖
C、 其它依赖

  • dubboCommons 依赖
  • spring boot 与 redis 整合依赖
  • mybatis 与 spring boot 整合依赖
  • 数据源 Druid 依赖
  • mysql 驱动依赖
  • slf4j-log4j12 依赖
  • spring-boot-starter-web 依赖

D、pom 文件

<groupId>com.abc</groupId>
<artifactId>11-provider-springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.5.RELEASE</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.8</java.version>
</properties>

<dependencies>
	<!--dubbo 与 spring boot 整合依赖-->
	<dependency>
		<groupId>com.alibaba.spring.boot</groupId>
		<artifactId>dubbo-spring-boot-starter</artifactId>
		<version>2.0.0</version>
	</dependency>
	<!-- zk 客户端依赖:zkclient -->
	<dependency>
		<groupId>com.101tec</groupId>
		<artifactId>zkclient</artifactId>
		<version>0.10</version>
	</dependency>
	<dependency>
		<groupId>com.abc</groupId>
		<artifactId>11-dubboCommons</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
	<!--Spring Boot 与 Redis 整合依赖-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-redis</artifactId>
	</dependency>
	<!--mybatis 与 Spring Boot 整合依赖-->
	<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>1.3.2</version>
	</dependency>
	<!--数据源 Druid 依赖-->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>1.1.10</version>
	</dependency>
	<!--MySQL 驱动依赖-->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.47</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.25</version>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
	<resources>
		<!--注册 dao 包下 mybatis 映射文件为资源目录-->
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.xml</include>
			</includes>
		</resource>
	</resources>
</build>

(3) 定义 Service 实现类
把@Service注解换成阿里的@Service注解:
在这里插入图片描述

(4) 定义 Dao 接口
在这里插入图片描述

(5) 定义映射文件

<mapper namespace="com.abc.dao.EmployeeDao">
	<insert id="insertEmployee">
		insert into employee(name, age) values(#{name}, #{age})
	</insert>
	
	<select id="selectEmployeeCount" resultType="int">
		select count(id) from employee
	</select>
	
	<select id="selectEmployeeById" resultType="Employee">
		select id, name, age from employee where id=#{xxx}
	</select>
</mapper>

(6) 修改启动类

在启动类上必须要添加@EnableDubboConfiguration 注解,开启 Dubbo 的自动配置功能。
在这里插入图片描述

(7) 修改主配置文件

server:
  port: 8888
mybatis:
  # 注册 mybatis 中实体类的别名
  type-aliases-package: com.abc.bean
  # 注册映射文件
  mapper-locations: classpath:com/abc/dao/*.xml
spring:
  # 注册数据源
  datasource:
    # 指定数据源类型为 Druid
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///test?useUnicode=true&amp;characterEncoding=utf8
    username: root
    password: 111
  # 连接 Redis 服务器
  redis:
    host: redis5OS
    port: 6379
    password: 111
  # 连接 Redis 高可有集群
  # redis:
    # sentinel:
    # master: mymaster
    # nodes:
      # - sentinelOS1:26379
      # - sentinelOS2:26379
      # - sentinelOS3:26379
  # 配置缓存
  cache:
    type: redis # 指定缓存类型
    cache-names: realTimeCache # 指定缓存区域名称

  # 功能等价于 spring-dubbo 配置文件中的<dubbo:application/>
  # 该名称是由服务治理平台使用
  application:
    name: 11-provider-springboot
  # 指定 zk 注册中心
  dubbo:
    registry: zookeeper://zkOS:2181
  # zk 集群作注册中心
  # registry: zookeeper://zkOS1:2181?backup=zkOS2:2181,zkOS3:2181

10.4 定义消费者 11-consumer-springboot

(1) 创建工程

创建一个 Spring Boot 工程,并重命名为 11-consumer-springboot。

(2) 定义 pom 文件

  • dubbo 与 spring boot 整合依赖
  • zkClient 依赖
  • dubboCommons 依赖
  • JSP 引擎 jasper 依赖
  • slf4j-log4j12 依赖
  • spring-boot-starter-web 依赖
<groupId>com.abc</groupId>
<artifactId>11-consumer-springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.5.RELEASE</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.8</java.version>
</properties>

<dependencies>
	<!--dubbo 与 spring boot 整合依赖-->
	<dependency>
		<groupId>com.alibaba.spring.boot</groupId>
		<artifactId>dubbo-spring-boot-starter</artifactId>
		<version>2.0.0</version>
	</dependency>
	<!-- zk 客户端依赖:zkclient -->
	<dependency>
		<groupId>com.101tec</groupId>
		<artifactId>zkclient</artifactId>
		<version>0.10</version>
	</dependency>
	<dependency>
		<groupId>com.abc</groupId>
		<artifactId>11-dubboCommons</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
	<!--Tomcat 内置 JSP 引擎 jasper-->
	<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-jasper</artifactId>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.25</version>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
	<resources>
		<!--注册 webapp 目录为资源目录-->
		<resource>
			<directory>src/main/webapp</directory>
			<targetPath>META-INF/resources</targetPath>
			<includes>
				<include>**/*.*</include>
			</includes>
		</resource>
	</resources>
</build>

(3) 修改主配置文件

spring:
  # 功能等价于 spring-dubbo 配置文件中的<dubbo:application/>
  application:
  name: 11-consumer-springboot
  # 指定 zk 注册中心
  dubbo:
    registry: zookeeper://zkOS:2181
    # zk 集群作注册中心
    # registry: zookeeper://zkOS1:2181?backup=zkOS2:2181,zkOS3:2181

(4) 创建 index.jsp 页面

在 src/main/webapp 目录下定义 index.jsp 文件。
在这里插入图片描述

(5) 定义处理器
在这里插入图片描述

(6) 定义 welcome.jsp 页面

在 src/main/webapp 目录下定义 welcome.jsp 文件。
在这里插入图片描述

(7) 修改入口类
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41947378/article/details/108750591