• SpringCloud学习笔记-Eureka的服务拉取



    假设是OrderService里面拉取Eureka的服务之一User Service

    1.依然需要在该服务里面引入依赖

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.在OrderService里面需要有如下配置

    spring:
      application:
        name: orderservice #添加的微服务的服务名称,把名字为userservice的微服务加入到注册名单中
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:10086/eureka   #eureka的地址信息
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.修改URL和OrderService中添加@Load Balanced注解

    1.修改URL

    package cn.itcast.eureka.order.service;
    
    import cn.itcast.eureka.order.mapper.OrderMapper;
    import cn.itcast.eureka.order.pojo.Order;
    import cn.itcast.eureka.order.pojo.User;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.web.client.RestTemplate;
    
    import javax.annotation.Resource;
    
    @Service
    public class OrderService {
    
        @Autowired
        private OrderMapper orderMapper;
        @Autowired
        private RestTemplate restTemplate;
        public Order queryOrderById(Long orderId) {
    
            // 1.查询订单
            Order order = orderMapper.findById(orderId);
            String url = "http://userservice/user/" + order.getUserId();//OrderService里面拉取Eureka的服务之一User Service
            //把原来的http://localhost:8080/user/变成了http://userservice/user/
            User user = restTemplate.getForObject(url, User.class);
            order.setUser(user);
            // 4.返回
            return order;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    2.OrderService中添加@Load Balanced注解

    package cn.itcast.eureka.order;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    @MapperScan("cn.itcast")
    @SpringBootApplication
    public class OrderApplication {
        @Bean @LoadBalanced
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
        public static void main(String[] args) {
            SpringApplication.run(OrderApplication.class, args);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    通过服务名称获取IP地址的原理如下图所示,其中由于WIndows电脑的设置,原来的IP地址被替换成为了电脑名称LAPTOPXXX,其实还是可以获取到具体的IP

    在这里插入图片描述

  • 相关阅读:
    第四次线上面试总结(2022.9.15 三面)
    论文解读(SEP)《Structural Entropy Guided Graph Hierarchical Pooling》
    宽字节注入
    spring AOP注解@Aspect的使用
    无人驾驶与人工驾驶的对比,人工驾驶的优缺点
    Spring响应式高并发编程
    你需要了解的关于 React 的知识 useEvent钩子 RFC
    idea常用的快捷键汇总
    TCP/IP Illustrated Episode 5
    Django day1
  • 原文地址:https://blog.csdn.net/weixin_46028606/article/details/133691599