Consul服务注册中心--consul与springboot整合的consul-demo实例(下)

consul与springboot整合的consul-demo实例

service-consumer

service-consumer代码目录如下:
在这里插入图片描述
其中,pom内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<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.xxxx</groupId>
    <artifactId>service-consumer</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--继承父依赖-->
    <parent>
        <groupId>com.xxxx</groupId>
        <artifactId>consul-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <!--项目依赖-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!--spring cloud consul 依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
        <!--spring boot actuator依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--spring boot web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <!--spring boot test依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

</project>

application.yml文件内容如下:

server:
  port: 9090 # 端口
spring:
  application:
    name: service-consumer # 应用名称
    # 配置Consul注册中心
  cloud:
    consul:
      # 注册中心的访问地址
      host: localhost
      port: 8500
      # 服务提供者信息
      discovery:
        register: false # 是否需要注册
        instance-id: ${
    
    spring.application.name}-01 # 注册实例id(必须唯一)
        service-name: ${
    
    spring.application.name} # 服务名称
        port: ${
    
    server.port} # 服务端口
        prefer-ip-address: true #是否使用ip地址注册
        ip-address: ${
    
    spring.cloud.client.ip-address} # 服务请求ip


OrderController

@RestController
@RequestMapping("/order")
public class OrderController {
    
    
    @Autowired
    private OrderService orderService;

    /**
     * 根据主键查询订单
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Order selectOrderById(@PathVariable("id") Integer id) {
    
    
        return orderService.selectOrderById(id);
    }
}

实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Order implements Serializable {
    
    
    private Integer id;
    private String orderNo;
    private String orderAdress;
    private Double totalPrice;
    private List<Product> productList;

}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Product implements Serializable {
    
    
    private Integer id;
    private String productName;
    private Integer productNum;
    private Double productPrice;
}

OrderServiceImpl

@Service
public class OrderServiceImpl implements OrderService {
    
    
    @Autowired
    private RestTemplate restTemplate;

    /**
     * 根据主键查询订单
     * @param id
     * @return
     */
    @Override
    public Order selectOrderById(Integer id) {
    
    
        return new Order(id,"order-001","中国",22780D,selectProductListByLoadBalancerAnnotation());
    }

    private List<Product> selectProductListByLoadBalancerAnnotation() {
    
    
        //ResponseEntity:封装了返回数据
        ResponseEntity<List<Product>> response = restTemplate.exchange("http://service-provider/product/list",
                HttpMethod.GET, null, new ParameterizedTypeReference<List<Product>>() {
    
    
                });
        return response.getBody();
    }
}

OrderService

/**
 * 商品服务
 */
public interface OrderService {
    
    
    /**
     * 查询商品列表
     * @return
     */
    Order selectOrderById(Integer id);

}

猜你喜欢

转载自blog.csdn.net/qq_38530648/article/details/114144328