一、RestTemplate的使用

122 阅读5分钟

目录

1、新建项目springcloud(File--->New--->Project)

使用maven quickstart快速新建Maven项目

 输入项目名称和Maven信息

 确认Maven目录、配置文件、本地仓库,Finish即可

2、创建聚合项目springcloud-member、springcloud-order(项目名称自定义,以会员项目、订单项目做演示远程调用)

右键父项目--->New--->Module,剩下步骤和新建父项目同理

 两个项目pom文件均引入springboot的web模块

3、编写springcloud-member配置文件、服务启动类、Controller

3.1  application.yml

3.2  服务启动类MemberApp.class

3.3 MemberController.class

4、编写springcloud-order配置文件、服务启动类、Controller

4.1 application.yml

4.2 服务启动类OrderApp.class

4.3 OrderController.class

5、使用RestTemplate访问远程接口

5.1  实例化RestTemplate Bean对象

5.2  注入RestTemplate Bean对象

5.3  通过getForObject方法调用远程接口

6、启动两个聚合项目启动类OrderApp、MemberApp

访问地址:localhost:9071/order/orderInfo

访问地址:localhost:9081/member/getOrderInfo

 7、项目结构


1、新建项目springcloud(File--->New--->Project)

使用maven quickstart快速新建Maven项目

 输入项目名称和Maven信息

 确认Maven目录、配置文件、本地仓库,Finish即可

 此项目为聚合项目的父项目,只需要保留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.chen</groupId>
    <artifactId>springcloud</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>springcloud-member</module>
        <module>springcloud-order</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <springboot.version>2.2.8.RELEASE</springboot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springboot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

</project>

2、创建聚合项目springcloud-member、springcloud-order(项目名称自定义,以会员项目、订单项目做演示远程调用)

右键父项目--->New--->Module,剩下步骤和新建父项目同理

 两个项目pom文件均引入springboot的web模块

  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3、编写springcloud-member配置文件、服务启动类、Controller

3.1  application.yml

server:
  port: 9081

3.2  服务启动类MemberApp.class

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class MemberApp {

    // 手动注入RestTemplate实例
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(MemberApp.class, args);
    }
}

3.3 MemberController.class

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/member")
public class MemberController {

    //注入RestTemplate
    @Autowired
    private RestTemplate template;

    //RestTemplate访问远程接口
    @GetMapping("/getOrderInfo")
    public String getOrderInfo() {
        return template.getForObject("http://localhost:9071/order/orderInfo", String.class);
    }

 
}

4、编写springcloud-order配置文件、服务启动类、Controller

4.1 application.yml

server:
  port: 9071

4.2 服务启动类OrderApp.class

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class OrderApp {
    public static void main(String[] args) {
        SpringApplication.run(OrderApp.class, args);
    }
}

4.3 OrderController.class

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/order")
public class OrderController {

    @GetMapping("/orderInfo")
    public String OrderInfo() {
        return "this is Order Info";
    }

}

5、使用RestTemplate访问远程接口

5.1  实例化RestTemplate Bean对象

 @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

5.2  注入RestTemplate Bean对象

@Autowired
private RestTemplate template;

5.3  通过getForObject方法调用远程接口

template.getForObject(url,class);

Url:远程接口地址

Class:接口返回值类型

如:

template.getForObject( **"http://localhost:9071/order/orderInfo" **, String.class);

6、启动两个聚合项目启动类OrderApp、MemberApp

访问地址:localhost:9071/order/orderInfo

访问地址:localhost:9081/member/getOrderInfo

 7、项目结构