構建服務消費者 springcloud-study-consumer-dept-80
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">
<parent>
<artifactId>springcloud-study</artifactId>
<groupId>com.sc.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sc.springcloud</groupId>
<artifactId>springcloud-study-consumer-dept-80</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--引入自己定義的api通用包-->
<dependency>
<groupId>com.sc.springcloud</groupId>
<artifactId>springcloud-study-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--熱部署 修改後立即生效-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
yml配置
server:
port: 80
創建配置類,並註冊RestTemplate
@Configuration
public class ConfigBean {
/**
* 配置RestTemplate
* 通過RestTemplate調用提供者服務 ,發送rest請求
* 提供了多種訪問http服務的方法,
* 針對於訪問rest服務<strong>客戶端</strong>的調用的模板類
* @return
*/
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
創建controller,用於對外提供接口,並調用提供者的controller,RestTemplate通信爲http模式,
@RestController
public class DeptConsumerController {
private static final String REST_URL_PREFIX="http://localhost:8001";
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/consumer/dept/add")
public boolean add( DeptEntity deptEntity){
//三個參數:url,requestMap ResponseBean.class
return restTemplate.postForObject(
REST_URL_PREFIX+"/dept/add",
deptEntity,
Boolean.class);
}
@RequestMapping("/consumer/dept/findById/{deptNo}")
public DeptEntity findById(Long deptNo){
//三個參數:url,requestMap ResponseBean.class
return restTemplate.getForObject(
REST_URL_PREFIX+"/dept/findById/"+deptNo,
DeptEntity.class);
}
@RequestMapping("/consumer/dept/findAll")
public List findAll(){
//三個參數:url,requestMap ResponseBean.class
return restTemplate.getForObject(
REST_URL_PREFIX+"/dept/findAll",
List.class);
}
@RequestMapping(value = "/consumer/dept/discovery")
public Object discovery(){
return restTemplate.getForObject(
REST_URL_PREFIX+"/dept/discovery",
Object.class);
}
}
最後是啓動類
@SpringBootApplication
public class DeptConsumer80App {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer80App.class,args);
}
}
最後測試:
我們開啓提供者和消費者,他們是兩個不同的進程,由於是80端口所以可以省略,這樣我們就實現了兩個模塊之間的遠程調用