二、Spring Cloud详解一、从Spring boot项目开始

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/makyan/article/details/88633974

一、创建springboot项目
##1、先创建一个父类项目:futurecloud-master
###1.1. 将当前项目声明为springboot项目

org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE

###1.2. 添加springboot项目依赖

<dependencies>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>

###1.3. 添加maven 打包插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

##2. 创建两个java 项目 (Module):futurecloud-user、futurecloud-order
###2.1. 将此两个项目变为web项目
在这两个项目的pom.xm中添加依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>

###2.2. futurecloud-user项目作为服务提供者

####2.2.1. 配置application.yml
server:
port: 7900 #程序启动端口,也就是tomcat的端口
spring:
application:
name: futurecloud-user #应用名称,别名


@RestController #将Controller设置成Rest风格
public class UserController {

@GetMapping("/user/{id}")
public User getUser(@PathVariable  Long id){
    return new User(id);
}

}

###2.3. futurecloud-order项目作为服务消费者
####2.3.1. 配置application.yml
server:
port: 8900
spring:
application:
name: futurecloud-order


@RestController
public class OrderController {

@Autowired
private RestTemplate restTemplate; //spring 提供的一个用于访问rest接口的模板对象

private String url = “http://localhost:7900/user/”;
private String url;

@GetMapping("/order/{id}")                                                                          
public User getOrder(@PathVariable Long id){

    //访问提供者,获取数据
    //通过防伪rest,获取到Json数据,然后转换成User对象
    User user = restTemplate.getForObject(url + id,User.class);
    return user;
}

}


#问题:怎么维护服务提供者的URL地址?
问题:以上服务提供者的Url直接写在Controller中,不利于代码的管理以及后期的维护,
可以将url写在yml配置文件中,然后使用@Value 注解获取配置参数,如下yml配置


server:
port: 8900
spring:
application:
name: futurecloud-order
user:
url: http://localhost:7900/user/


Controller修改为:


@RestController
public class OrderController {

@Autowired
private RestTemplate restTemplate; //spring 提供的一个用于访问rest接口的模板对象

// private String url = “http://localhost:7900/user/”;
@Value("${user.url}") //将url写到yml配置文件中
private String url;

@GetMapping("/order/{id}")                                                                          
public User getOrder(@PathVariable Long id){

    //访问提供者,获取数据
    //通过防伪rest,获取到Json数据,然后转换成User对象
    User user = restTemplate.getForObject(url + id,User.class);
    return user;
}

}


猜你喜欢

转载自blog.csdn.net/makyan/article/details/88633974