Dubbo基础知识与SpringBoot整合项目_1-3

一、创建公用的部分提出到一个公共的项目中gmail-interface

还是应用上一篇文章的gmail-interface这个公用的项目 代码不变

二、服务提供者boot-user-service-provider

项目结构如下

pom.xml

<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">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.atguigu</groupId>
	<artifactId>boot-user-service-provider</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

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

	<name>boot-user-service-provider</name>
	<url>http://maven.apache.org</url>

	<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>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>com.atguigu.gmail</groupId>
			<artifactId>gmail-interface</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>0.2.0</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>
</project>

application.yml

# 注册中心
dubbo.application.name=user-service-provier
dubbo.registry.address=10.5.96.48:2181
dubbo.registry.protocol=zookeeper

#通信协议
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

#监控中心,去注册中心自动发现
dubbo.monitor.protocol=registry

服务提供者的具体实现UserService.java

package com.atguigu.gmail.service.impl;

import java.util.Arrays;

import java.util.List;

import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;
import com.atguigu.gmail.bean.UserAddress;
import com.atguigu.gmail.service.UserService;

@Component   //这个是Spring 的注解将组件放入到IOC
@Service     //这个是dubbo 的注解用于暴露服务的
public class UserServiceImpl implements UserService {

	public List<UserAddress> getUserAddressList(String userId) {
		UserAddress address1 = new UserAddress(1,"东长安街89号","1","王老师","13278977","1");
		UserAddress address2 = new UserAddress(2,"西长安街90号","1","李老师","13278988","1");
		return Arrays.asList(address1,address2);
	}

}

程序的主启动类服务提供者ProviderApp.java

package com.atguigu.gmail;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

/**
 * 1.导入依赖
 *    1)导入dubbo-starter
 *    2)导入dubbo的其它依赖
 * @author Administrator
 */
@EnableDubbo //开启基于注解的dubbo功能
@SpringBootApplication
public class ProviderApp 
{
    public static void main( String[] args )
    {
        SpringApplication.run(ProviderApp.class, args);
    }
}

 三、服务消费者boot-order-service-consumer

pom.xml

<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">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.atguigu</groupId>
	<artifactId>boot-order-service-consumer</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>boot-order-service-consumer</name>
	<url>http://maven.apache.org</url>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.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>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
        <!-- 消费者是一个web项目 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>com.atguigu.gmail</groupId>
			<artifactId>gmail-interface</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
         <!-- 引入dubbo-starter的依赖-->
		<dependency>
			<groupId>com.alibaba.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>0.2.0</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>
</project>

application.yml 

server.port=8083 

dubbo.application.name=boot-order-service-consumer
dubbo.registry.address=zookeeper://10.5.96.48:2181
dubbo.monitor.protocol=registry

消费者订单实现类OrderServiceImpl.java

package com.atguigu.gmail.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.atguigu.gmail.bean.UserAddress;
import com.atguigu.gmail.service.OrderService;
import com.atguigu.gmail.service.UserService;

/**
 * 消费者订单实现类
 * @author Administrator
 *
 */

@Service
public class OrderServiceImpl implements OrderService{
	
//	@Autowired
	@Reference   //dubbo帮我们远程引用这个服务,从注册中心发现
	UserService userService;

	public List<UserAddress> initOrder(String userId){
		
		List<UserAddress> addressList = userService.getUserAddressList(userId);
		System.out.println(addressList);
		return addressList;
	}

}

消费者OrderController.java

package com.atguigu.gmail.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.atguigu.gmail.bean.UserAddress;
import com.atguigu.gmail.service.OrderService;

@Controller
public class OrderController {

	@Autowired
	OrderService orderService;
   /**
     * 初始化订单
     * 以json的形式返回数据
     **/
	@ResponseBody
	@RequestMapping("/initOrder")
	public List<UserAddress>  initOrder(@RequestParam("uid")String userId){
		return orderService.initOrder(userId);
	}
	
}

消费者主启动类ConsumerApp.java

package com.atguigu.gmail;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

/**
 * 1.导入依赖
 *    1)导入dubbo-start
 *    2)导入dubbo的其它依赖
 */
@EnableDubbo
@SpringBootApplication
public class ConsumerApp 
{
    public static void main( String[] args )
    {
       SpringApplication.run(ConsumerApp.class,args);
    }
}

先启动提供者,再启动消费者,然后看可视化控制台

有服务提供者,服务消费者,还有我们的监控中心

在我们本地浏览器输入下面的地址,可以看到返回的json数据

总结

1在pom文件中引入dubbo-starter的依赖

2.在application.yml中配置注册中心和dubbo

3.如果是暴露服务用dubbo的@Service 注解, 如果是消费服务用@Reference注解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值