一、创建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;
}
}