(9)SpringCloud - Eureka服务发现(不是重点)

本文介绍了SpringCloud Eureka的服务发现机制,如何通过Eureka获取微服务信息,并展示了修改8001工程DeptController的过程,以及启动7001、8001端口的配置。最后,讨论了为何需要编写80端口,以便对外提供服务发现接口。
摘要由CSDN通过智能技术生成

1 对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息

服务发现的意思就是:对外暴露微服务,也能够让消费者知道我们。

对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息。

打个比方,就是我们有个快递,我们想知道快递到哪了,快递员是谁?多久能到达
这个时候是不是可以有快递查询发现的接口信息提供服务。

2 修改8001工程的DeptController

在这里插入图片描述

dao 包下 DeptDao

package com.atguigu.springcloud.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.atguigu.springcloud.entities.Dept;

@Mapper
public interface DeptDao
{
	public boolean addDept(Dept dept);

	public Dept findById(Long id);

	public List<Dept> findAll();
}

service包下 DeptService

import java.util.List;

import com.atguigu.springcloud.entities.Dept;

public interface DeptService
{
	public boolean add(Dept dept);

	public Dept get(Long id);

	public List<Dept> list();
}

service包下 DeptServiceImpl

package com.atguigu.springcloud.service.impl;

import java.util.List;

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

import com.atguigu.springcloud.dao.DeptDao;
import com.atguigu.springcloud.entities.Dept;
import com.atguigu.springcloud.service.DeptService;

@Service
public class DeptServiceImpl implements DeptService
{
	@Autowired
	private DeptDao dao;
	
	@Override
	public boolean add(Dept dept)
	{
		return dao.addDept(dept);
	}

	@Override
	public Dept get(Long id)
	{
		return dao.findById(id);
	}

	@Override
	public List<Dept> list()
	{
		return dao.findAll();
	}

}

Controller

在这里插入图片描述

用这个来获取所有的微服务(入住人员信息)

	@Autowired
	private DiscoveryClient client;

完整的Controller代码:

package com.atguigu.springcloud.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.atguigu.springcloud.entities.Dept;
import com.atguigu.springcloud.service.DeptService;

@RestController
public class DeptController
{
	@Autowired
	private DeptService service;
	@Autowired
	private DiscoveryClient client;

	@RequestMapping(value = "/dept/add", method = RequestMethod.POST)
	public boolean add(@RequestBody Dept dept)
	{
		return service.add(dept);
	}

	@RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)
	public Dept get(@PathVariable("id") Long id)
	{
		return service.get(id);
	}

	@RequestMapping(value = "/dept/list", method = RequestMethod.GET)
	public List<Dept> list()
	{
		return service.list();
	}

	
//	@Autowired
//	private DiscoveryClient client;
	@RequestMapping(value = "/dept/discovery", method = RequestMethod.GET)
	public Object discovery()
	{
		List<String> list = client.getServices();
		System.out.println("**********" + list);

		List<ServiceInstance> srvList = client.getInstances("MICROSERVICECLOUD-DEPT");
		for (ServiceInstance element : srvList) {
			System.out.println(element.getServiceId() + "\t" + element.getHost() + "\t" + element.getPort() + "\t"
					+ element.getUri());
		}
		return this.client;
	}

}

主启动类
在这里插入图片描述

2 启动7001 8001

启动端口:
localhost:8001/dept/discovery
在这里插入图片描述
在Controller写的目的是为了准备的找到
控制台输出。

在这里插入图片描述

编写80端口

添加如下内容

因为我们最终都是要给消费者提供服务

然后启动80,7001,8001
3个端口

80:消费者
7001:eureka(服务注册中心)
8001:微服务的提供者

然后访问:
localhost/consumer/dept/discovery
客户端也能够访问到

上述做的目的就是:
在这里插入图片描述
我们只有自己人能够点这个超链接,但是别人是不行的。
别人也点不到这个超链接,也不知道我的微服务。

那么为了让别人对我这个有一个了解,让你知道我的server id 叫什么 是什么IP
那么8001 是可以做一个对外暴露发现的窗口和rest给你来访问,
这样就可以让你获得对我的了解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值