为了实现项目的实际运用,这一天我将整个项目完善。如果没有兴趣,可以直接下载源码,跳到第三天。有些细节可能估计不到,所以直接给出源码。
- 创建项目vlluviaCloud-api
此项目可以理解为 公共项目
a) 创建entitie 包
b) 创建Person类
@NoArgsConstructor
@Data
@Accessors(chain = true)
public class Person implements Serializable {
private int id;
private String name;
private String address;
}
- 创建vlluviaCloud-provider-dept-8001 项目
服务的提供者,可以理解为传统意义上项目restful接口的实现类。但是我们省略数据库连接的过程和所有的实现过程。
a) 创建controllers 包
b) 创建PersonController 类
@RestController
public class PersonController {
private List<Person> get() {
List<Person> lists = new ArrayList<>();
lists.add(new Person(12, "liming", "北京"));
lists.add(new Person(16, "haoran", "浙江"));
lists.add(new Person(30, "taini", "四川"));
return lists;
}
@RequestMapping(value = "/person/get/{id}", method = RequestMethod.GET)
public Person getPerson(@PathVariable("id") int id) {
for (Person person : get()) {
if (person.getId() == id)
return person;
}
return null;
}
@RequestMapping(value = "/person/gets", method = RequestMethod.GET)
public List<Person> gets() {
return get();
}
}
c) 修改application.properties 为application.yml
server:
port: 8001
spring:
application:
name: vlluviacloud-dept
eureka:
client: #客户端注册进eureka服务列表内
service-url:
#defaultZone: http://localhost:7001/eureka
defaultZone: http://eureka1:7001/eureka/,http://eureka2:7002/eureka/,http://eureka3:7003/eureka/
instance:
instance-id: vlluiaecloud-dept8001
prefer-ip-address: true #访问路径可以显示IP地址
d) 修改ProviderApplication
扫描二维码关注公众号,回复:
3316648 查看本文章
e) 最后项目结构
f) 访问http://localhost:8001/person/gets
- 修改vlluviaCloud-consumer-dept-80
RestTemplate 映射到本地 8001 端口
a) 创建config包
b) 创建ConfigBean 类
@Configuration
public class ConfigBean {
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
c) 创建controllers 包
d) 创建PersonController 类
@RestController
public class PersonController {
private static final String REST_URL_PREFIX = "http://localhost:8001";
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/consumer/person/get/{id}")
public Person getPerson(@PathVariable("id") int id)
{
return restTemplate.getForObject(REST_URL_PREFIX + "/person/get/"+id, Person.class);
}
@RequestMapping(value = "/consumer/person/gets")
public List<Person> list()
{
return restTemplate.getForObject(REST_URL_PREFIX + "/person/gets", List.class);
}
}
e) 访问http://localhost:8001/person/gets
- 请根据第2条,创建 vlluviaCloud-provider-dept-8002和 vlluviaCloud-provider-dept-8003