Skip to content

服务提供者,往往就是我们项目里真正要提供API接口的部分,也就是我们的业务代码。

由于我们这里只是示例,所以不牵扯数据库,controller层直接返回模拟数据。 我们把项目叫做role

主要选择以下几个依赖:

注意要选上Eureka Discovery Client,可以使我们的项目拥有注册到Eureka服务中心的能力。 接下来点create;

然后,我们创建一个实体类和一个Controller控制器:

修改配置文件:

  • server:
  • port: 8081
  • ​

应用名称:

  • client
  • spring:
  • application:
  • name: client
  • ​

注册到我们本地的eureka注册中心,端口是

8080 eureka: client: service-url: defaultZone: http://localhost:8080/eureka/

import com.mincheng.role.entity.RoleEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(value = "/role") public class RoleController {

@GetMapping(value = "/detail") public Object getRole() { RoleEntity role = new RoleEntity(); // 可以看到,我们没有在实体类写get和set方法,但是我们依然可以调用这些方法 //这就是Lombok插件的好处,只需要在实体类加一个@Data注解 role.setName("张三

"); role.setAge(18); return role; } }

然后我们修改一下这个项目的application.yml:

  • server:
  • port: 8081
  • ​

应用名称:

  • client
  • spring:
  • application:
  • name: client
  • ​

注册到我们本地的eureka注册中心,端口是

8080 eureka: client: service-url: defaultZone: http://localhost:8080/eureka/ 然后在启动类上加@EnableEurekaClient注解,表面这是一个服务提供者:

然后启动这个服务提供者,成功之后刷新注册中心页面,可以看到名叫client的服务已经注册进来(只有一个节点):

我们访问localhost:8081/role/detail,如下:

可能有同学要说了,你不是都微服务了吗,怎么还是直接调8081端口?为什么不走服务中心啊?这样还不如我直接创建一个Spring Boot项目呢?

我们先不通过服务中心调接口,因为服务注册中心是根据服务名称去选择要进行业务处理的服务器,而通过服务名称调用接口,要么走Fegin,Ribbon的RestTemplate,这些都是需要用Java代码实现的,适用于系统内部之间的调用,不适用于直接访问的情况。如果你想直接以API接口的方式访问服务注册中心的服务并且达到负载均衡的效果,只有通过网关。网关的内容在下面,先不着急。

本站总访问 — 次