springcloud共有五个组件:
1, 注册中心:
Eureka
2,负载均衡:
Ribbon
3,声明式调用远程方法:
Feign
4,熔断、降级、监控:
Hystrix
5,网关:
Zuul
最近一直在了解学习springcloud组件,写一篇文章记录一下供自己后期方便查看,也希望能帮助看到此文的朋友。
0:创建测试环境
1,创建父工程,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.dwsoft</groupId>
<artifactId>my-springcloud-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>my-springcloud-common</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- 导入 SpringCloud 需要使用的依赖信息 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>pom</type>
<!-- import 依赖范围表示将 spring-cloud-dependencies 包中的依赖信息导入 -->
<scope>import</scope>
</dependency>
<!-- 导入 SpringBoot 需要使用的依赖信息 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
2,创建通用工程,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>my-springcloud-parent</artifactId>
<groupId>com.dwsoft</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>my-springcloud-common</artifactId>
</project>
通用工程里创建一个实体类:
package com.dwsoft.myspringcloud.entity;
/**
* @author tlk
* @date 2020/7/13-13:43
*/
public class User {
private Integer userId;
private String userName;
private String email;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public User() {
}
public User(Integer userId, String userName, String email) {
this.userId = userId;
this.userName = userName;
this.email = email;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", email='" + email + '\'' +
'}';
}
}
3,创建一个服务提供者,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>my-springcloud-parent</artifactId>
<groupId>com.dwsoft</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>my-springcloud-provider</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.dwsoft</groupId>
<artifactId>my-springcloud-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
主启动类:
package com.dwsoft.myspringcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author tlk
* @date 2020/7/13-14:11
*/
@SpringBootApplication
public class ProviderMain {
public static void main(String[] args) {
SpringApplication.run(ProviderMain.class,args);
}
}
配置文件application.yml:
server:
port: 8081
创建controller以及对应测试方法:
package com.dwsoft.myspringcloud.controller;
import com.dwsoft.myspringcloud.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author tlk
* @date 2020/7/13-14:40
*/
@RestController
public class UserController {
@RequestMapping("/provider/get/user")
public User getUser(){
return new User(123,"小明","123@qq.com");
}
}
4,创建一个消费工程,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>my-springcloud-parent</artifactId>
<groupId>com.dwsoft</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>my-springcloud-consumer</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.dwsoft</groupId>
<artifactId>my-springcloud-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
主启动类:
package com.dwsoft.myspringcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author tlk
* @date 2020/7/13-14:50
*/
@SpringBootApplication
public class ConsumerMain {
public static void main(String[] args) {
SpringApplication.run(ConsumerMain.class,args);
}
}
创建配置类提供
RestTemplate(RestTemplate提供了多种便捷访问远程Http服务的方法
):
package com.dwsoft.myspringcloud.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
* @author tlk
* @date 2020/7/13-14:53
*/
@Configuration
public class MyConfig {
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
创建controller以及测试方法:
package com.dwsoft.myspringcloud.controller;
import com.dwsoft.myspringcloud.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @author tlk
* @date 2020/7/13-14:56
*/
@RestController
public class DoUserController {
private RestTemplate restTemplate;
@RequestMapping("/consumer/get/user")
public User getUser() {
String host = "http://127.0.0.1:8081";//服务提供工程的配置文件
String url="/provader/get/user"; //服务提供工程的controller
return restTemplate.getForObject(host+url,User.class);
}
}
配置文件application.yml:
server:
port: 8082
测试:分别启动服务提供工程以及消费工程
1,直接调用服务提供工程:
2,通过消费工程调用:
没问题,测试正常!
下一篇文章引入Eureka(注册中心)以及负载均衡 Ribbon ,地址:https://mp.csdn.net/console/editor/html/107318086