spring cloud实例Dome详细搭建(一)

详解搭建spring cloud的实例Demo,跟着一步一步走,肯定可以的


GitHub代码地址

准备工作:

  • 1.首先创建一个父项目,一个普通的java项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 2.创建好父项目后,在pom.xml中配置springcloud和springboot的统一版本
	<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
        <springboot.version>2.0.5.RELEASE</springboot.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springboot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

开始创建spring cloud的注册中心(eureka)

  • 1.创建子项目
    在这里插入图片描述
    在这里插入图片描述
    项目名字随便取(跳过)。。
  • 2.创建好子项目后,配置子项目的pom.xml
    在这里插入图片描述
<dependencies>
        <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>
        <!--Eureka服务端的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
  • 3.在eureka项目中创建启动类

在这里插入图片描述

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class Application_Eureka {
    public static void main(String[] args){
        SpringApplication.run(Application_Eureka.class);
    }
}
  • 4.创建配置文件application.yml(名称必须),配置端口和地址
server:
  port: 7001
eureka:
  instance:
    hostname: 127.0.0.1
  client:
    fetch-registry: false
    register-with-eureka: false
  • 5.启动main方法,访问 按上面配置 例:127.0.0.1:7001
    在这里插入图片描述

如果创建一个服务提供者,

  • 1.创建项目方式和eureka一致,在父项目下创建子项目,直接配置pom.xml
    在这里插入图片描述
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Eureka客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
  • 2.创建启动类,提供服务
    在这里插入图片描述
  • 3.启动类
@SpringBootApplication
@EnableEurekaClient
public class Application_Provider {
    public static void main(String[] args){
        SpringApplication.run(Application_Provider.class);
    }
}
  • 4.暴露服务
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("provider")
public class ProviderController {

    @RequestMapping("get")
    public String getData(){
        return "提供了数据";
    }
}
  • 5…创建配置文件application.yml(名称必须)
server:
  port: 8001
spring:
  application:
    name: TEST-PROVIDER   #服务名称,随意取
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka #注册到Eureka的地址
  • 6.(测试)启动项目,访问 127.0.0.1:8001/provider/get
    在这里插入图片描述
  • 再查看Eureka的页面: 127.0.0.1:7001
    在这里插入图片描述

有了服务提供者,就创建一个项目来消费

  • 1.创建项目方式和上面一致
  • 2.配置pom.xml
 <dependencies>
        <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>
 </dependencies>

在这里插入图片描述

  • 3.创建启动类
@SpringBootApplication
public class Application_Consumer {
    public static void main(String[] args){
        SpringApplication.run(Application_Consumer.class);
    }
}
  • 4.创建消费接口
@RestController
@RequestMapping("consumer")
public class ConsumerController {
	//资源路径
    private final String url = "http://127.0.0.1:8001/provider/get";

    @RequestMapping("get")
    public String get(){
        RestTemplate template = new RestTemplate();
        String data = template.getForObject(url, String.class);
        return data;
    }
}
  • 5.配置文件application.yml(名称必须),配置端口
server:
  port: 9001
  • 6.启动项目,访问: 127.0.0.1:9001/consumer/get 成功获取到了数据
    在这里插入图片描述

创建spring cloud的网关

  • 1.创建子项目,方式和上面的一致
  • 2.配置pom.xml
<dependencies>
        <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>
        <!--Eureka的客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--Zuul网关的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
    </dependencies>
  • 2.创建启动类
    在这里插入图片描述
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class Application_Zuul {
    public static void main(String[] args){
        SpringApplication.run(Application_Zuul.class);
    }
}
  • 3.配置文件application.yml(名称必须)
server:
  port: 9527
spring:
  application:
    name: ZUUL-SERVER		#Zuul网关在Eureka的服务名称,随便取
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka	 #Eureka的注册地址
zuul:
  routes:
    provider.serviceId: TEST-PROVIDER	#没有提示,自己取名称,值为服务的名称
  • 4.启动网关,通过网关访问服务提供
    规则:127.0.0.1:9527/网关服务名称(小写)/服务提供者名称(小写)/服务路径
    例:127.0.0.1:9527/zuul-server/test-provider/provider/get

    在这里插入图片描述
  • 5.这样的话,路径太长麻烦,不安全,在配置文件中继续配置
server:
  port: 9527
spring:
  application:
    name: ZUUL-SERVER
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka
zuul:
  routes:
    provider.serviceId: TEST-PROVIDER
    provider.path: /test/**  #匹配指定的路径,资源匹配的路径才会拦截,转发
  • 6.重新启动项目
    原来路径:127.0.0.1:9527/zuul-server/test-provider/provider/get
    网关访问路径变为: 127.0.0.1:9527/test/provider/get

    在这里插入图片描述
    !!!但是我们还可以使用原来的网关地址访问资源,需要给屏蔽掉!!!
  • 7.修改配置文件
server:
  port: 9527
spring:
  application:
    name: ZUUL-SERVER
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka
zuul:
  routes:
    provider.serviceId: TEST-PROVIDER
    provider.path: /test/**  #匹配指定的路径,资源匹配的路径才会拦截,转发
  ignored-services: "*"      #忽略直接使用服务名   *忽略所有的服务
  prefix: /server            #统一给访问前缀
  • 8.访问路径变为: 127.0.0.1:9527/server/test/provider/get
    在这里插入图片描述
    !!!并且原来的网关地址已经不能访问了!!!
    在这里插入图片描述

fegin的内部调用

我们要在一个服务提供者中使用另一个服务提供者的服务,需要使用fegin进行内部服务的调用

  • 1.创建一个项目,就不多说了,和上面一样
  • 2.导入依赖,pom.xml
    <dependencies>
        <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>
        <!--Eureka的客户端的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--Feign的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
  • 3.首先创建项目结构、启动类,和配置文件application.yml(名称必须)
    在这里插入图片描述
    启动类:
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients("com.wlg.feign.client") 	//feign接口的地址(上图的client目录)
public class Application_Feign {
    public static void main(String[] args){
        SpringApplication.run(Application_Feign.class);
    }
}

application.yml

server:
  port: 9002
spring:
  application:
    name: FEIGN-CONSUMER
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka
  • 4.在client目录下,创建Client接口,映射和方法名建议复制对应的Controller层
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(value = "TEST-PROVIDER") 	//要调用的服务名称
@RequestMapping("provider")				//和调用服务controller的一致
public interface DataClient {

	//和调用服务controller的一致
    @RequestMapping("get")
    public String getData();
}
  • 5.在需要使用的地方注入,就可以调用了
import com.wlg.feign.client.DataClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("consumer")
public class DataFeignController {

    @Autowired
    private DataClient dataClient;

    @RequestMapping("feignGet")
    public String get(){
        return dataClient.getData();
    }
}

在这里插入图片描述

  • 6.启动项目测试一波
    127.0.0.1:9002/consumer/feignGet
    在这里插入图片描述

配置中心(config),熔断器(hystrix),(负载均衡)ribbon
下一章:https://blog.csdn.net/qq_44575680/article/details/106784855

  • 28
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
# Spring Cloud Examples Spring Cloud 使用的各种示例,以最简单、最实用为标准 [Spring Cloud 中文索引](https://github.com/ityouknow/awesome-spring-cloud)  |   [Spring Boot学习示例代码](https://github.com/ityouknow/spring-boot-examples)  |   [参与贡献](https://github.com/ityouknow/spring-cloud-examples/issues) [English](README_EN.md)  |   **[github地址](https://github.com/ityouknow/spring-cloud-examples)**  |   **[码云地址](https://gitee.com/ityouknow/spring-cloud-examples)** Spring Cloud 使用的各种示例,以最简单、最实用为标准 **[Spring Boot 2.0 最全使用教程](https://github.com/ityouknow/spring-boot-leaning)** - [spring-cloud-eureka](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-eureka):eureka server单机、双机、集群示例 - [eureka-producer-consumer](https://github.com/ityouknow/spring-cloud-examples/tree/master/eureka-producer-consumer):利用eureka实现服务提供与调用示例 - [spring-cloud-hystrix](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-hystrix):Hystrix熔断的使用示例 - [hystrix-dashboard-turbine](https://github.com/ityouknow/spring-cloud-examples/tree/master/hystrix-dashboard-turbine):熔断监控Hystrix Dashboard和Turbine的示例 - [spring-cloud-config-git](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-git):配置中心git版本示例 - [spring-cloud-config-svn-refresh](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-svn-refresh):配置中心svn版本示例,客户端refresh版本示例 - [spring-cloud-config-eureka](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-eureka):配置中心服务化和高可用代码示例 - [spring-cloud-config-eureka-bus](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-eureka-bus):配置中心和消息总线示例(配置中心终结版) - [gateway-service-zuul](https://github.com/ityouknow/spring-cloud-examples/tree/master/gateway-service-zuul):Spring Cloud Zuul使用初级篇 网关 均衡负载 - [spring-cloud-zuul](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-zuul):Spring Cloud Zuul使用高级篇 Filter 鉴权 熔断 重试 - [spring-cloud-sleuth-zipkin](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-sleuth-zipkin): 利用Sleuth、Zipkin对Spring Cloud应用进行服务追踪分析 - [spring-boot-admin-eureka](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-boot-admin-eureka): 使用Spring Boot Admin 对Spring Cloud集群进行监控示例 - [spring-cloud-consul](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-consul): Spring Cloud 使用 Consul 作为服务中心示例 - [spring-cloud-gateway](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-gateway): Spring Cloud 使用 gateway 的相关示例 学习系列: - [springcloud(一):大话Spring Cloud](http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html) - [springcloud(二):注册中心Eureka](http://www.ityouknow.com/springcloud/2017/05/10/springcloud-eureka.html) - [springcloud(三):服务提供与调用](http://www.ityouknow.com/springcloud/2017/05/12/eureka-provider-constomer.html) - [springcloud(四):熔断器Hystrix](http://www.ityouknow.com/springcloud/2017/05/16/springcloud-hystrix.html) - [springcloud(五):熔断监控Hystrix Dashboard和Turbine](http://www.ityouknow.com/springcloud/2017/05/18/hystrix-dashboard-turbine.html) - [springcloud(六):配置中心git示例](http://www.ityouknow.com/springcloud/2017/05/22/springcloud-config-git.html) - [springcloud(七):配置中心svn示例和refresh](http://www.ityouknow.com/springcloud/2017/05/23/springcloud-config-svn-refresh.html) - [springcloud(八):配置中心服务化和高可用](http://www.ityouknow.com/springcloud/2017/05/25/springcloud-config-eureka.html) - [springcloud(九):配置中心和消息总线(配置中心终结版)](http://www.ityouknow.com/springcloud/2017/05/26/springcloud-config-eureka-bus.html) - [springcloud(十):服务网关zuul](http://www.ityouknow.com/springcloud/2017/06/01/gateway-service-zuul.html) - [springcloud(十一):服务网关Zuul高级篇](http://www.ityouknow.com/springcloud/2018/01/20/spring-cloud-zuul.html) - [springcloud(十二):使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪](http://www.ityouknow.com/springcloud/2018/02/02/spring-cloud-sleuth-zipkin.html) - [springcloud(十三):Spring Cloud Consul 使用详解](http://www.ityouknow.com/springcloud/2018/07/20/spring-cloud-consul.html) - [Spring Cloud (十四):Spring Cloud 开源软件都有哪些?](http://www.ityouknow.com/springcloud/2018/08/06/spring-cloud-open-source.html) - [springcloud(十五):服务网关 Spring Cloud GateWay 初级篇](http://www.ityouknow.com/springcloud/2018/12/12/spring-cloud-gateway-start.html) - [springcloud(十六):服务网关 Spring Cloud GateWay 服务化和过滤器](http://www.ityouknow.com/springcloud/2019/01/19/spring-cloud-gateway-service.html) - [springcloud(十七):服务网关 Spring Cloud GateWay 熔断、限流、重试](http://www.ityouknow.com/springcloud/2019/01/26/spring-cloud-gateway-limit.html) 综合篇: - **[Spring Cloud在国内中小型公司能用起来吗?](http://www.ityouknow.com/springcloud/2017/09/11/can-use-springcloud.html)** - **[中小型互联网公司微服务实践-经验和教训](http://www.ityouknow.com/springcloud/2017/10/19/micro-service-practice.html)** - **[从架构演进的角度聊聊Spring Cloud都做了些什么?](http://www.ityouknow.com/springcloud/2017/11/02/framework-and-springcloud.html)**
以下是一个简单的 Vue 动态路由的示例: 假设我们有一个用户列表,我们希望用户能够点击列表中的某个用户,然后跳转到该用户的详细信息页面。我们可以使用 Vue 动态路由来实现这个功能。 首先,我们需要定义路由: ``` const routes = [ { path: '/users', name: 'Users', component: Users }, { path: '/users/:id', name: 'UserDetail', component: UserDetail, props: true } ] ``` 在上面的代码中,我们定义了两个路由,一个是用户列表页面的路由,另一个是用户详情页面的路由。注意,我们在第二个路由中使用了动态路由参数 `:id`。 然后,我们需要创建两个组件,一个是用户列表组件,另一个是用户详情组件: ``` <template> <div> <h2>Users</h2> <ul> <li v-for="user in users" :key="user.id"> <router-link :to="{ name: 'UserDetail', params: { id: user.id } }">{{ user.name }}</router-link> </li> </ul> </div> </template> <script> export default { data() { return { users: [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' } ] } } } </script> ``` ``` <template> <div> <h2>User Detail</h2> <p>User ID: {{ $route.params.id }}</p> </div> </template> ``` 在上面的代码中,我们在用户列表组件中使用了 `router-link` 组件来跳转到用户详情页面,并传递了用户的 ID 作为路由参数。 最后,我们需要在 Vue 根实例中注册路由: ``` import Vue from 'vue' import VueRouter from 'vue-router' import Users from './components/Users.vue' import UserDetail from './components/UserDetail.vue' Vue.use(VueRouter) const routes = [ { path: '/users', name: 'Users', component: Users }, { path: '/users/:id', name: 'UserDetail', component: UserDetail, props: true } ] const router = new VueRouter({ routes }) new Vue({ router }).$mount('#app') ``` 现在,我们就可以在浏览器中访问我们的应用,并且可以点击用户列表中的某个用户,然后跳转到该用户的详细信息页面。在用户详情页面中,我们可以使用 `$route.params.id` 来获取路由参数,并展示用户的 ID。 希望这个示例能够对你有所帮助!
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值