在idea环境下构建springCloud项目

 更新时间:2017年11月13日 10:19:05   作者:onpwerb  
本篇文章主要介绍了在idea环境下构建springCloud项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

 springCloud是基于springboot搭建的微服务。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

spring cloud官方文档:http://projects.spring.io/spring-cloud/

spring cloud 中文网 : https://springcloud.cc/

最终搭建后的工程源代码:https://github.com/onpwerb/SpringCloud

一、新建maven工程

根据spring cloud官方文档,在pom.xml导入如下代码

<!-- spring cloud 配置 -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.5.RELEASE</version>
  </parent>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Camden.SR6</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>

二、建立注册中心

新建名称为 discovery 的 module

1.在该module下的pom.xml导入如下配置:

<!-- @EnableEurekaServer -->
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-netflix-eureka-server</artifactId>
      <!--<version>1.1.6.RELEASE</version>-->
    </dependency>
  </dependencies>

2.在src/main/java目录下新建discovery文件夹,然后新建一个application

package discovery;

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

@SpringBootApplication
@EnableEurekaServer
public class DiscoveryApplicaion {
  public static void main(String[] args) {
    SpringApplication.run(DiscoveryApplicaion.class, args);
  }
}

3.在该module下的src/main/resources文件夹下,新建文件application.yml,配置注册中心eureka的相关服务

server:
 port: 8081
eureka:
 instance:
  hostname: localhost
 client:
  registerWithEureka: false
  fetchRegistry: false
  serviceUrl:
   defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

三、构建一个服务A

新建一个名为service的module

1.在src/main/java目录下新建service文件夹,然后新建一个application

package service;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ServiceApplication {
  @GetMapping("/service")
  public String service(){
    return "service";
  }

  public static void main(String[] args) {
    SpringApplication.run(ServiceApplication.class, args);
  }
}

2.在该module下的src/main/resources文件夹下,新建文件application.yml

spring:
 application:
  name: service.service
eureka:
 client:
  serviceUrl:
   defaultZone: http://localhost:8081/eureka/
server:
 port: 8082

四、构建第二个服务B

新建一个名为service2的module

1.在src/main/java目录下新建service2文件夹,然后新建一个application

package service2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class Service2Application {
  @RequestMapping("/service2")
  public String service2(){
    return "service2";
  }

  public static void main(String[] args) {
    SpringApplication.run(Service2Application.class, args);
  }
}

2.在该module下的src/main/resources文件夹下,新建文件application.yml

spring:
 application:
  name: service2
eureka:
 client:
  serviceUrl:
   defaultZone: http://localhost:8081/eureka/
server:
 port: 8083

五、配置网关

新建名称为 gateway 的 module

1.在该module下的pom.xml导入如下配置:

package gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
public class GatewayApplication {
  public static void main(String[] args) {
    SpringApplication.run(GatewayApplication.class, args);
  }
}

2.在src/main/java目录下新建gateway文件夹,然后新建一个application

eureka:
 client:
  serviceUrl:
   defaultZone: http://localhost:8081/eureka/
spring:
 application:
  name: gateway
server:
 port: 8084
zuul:
 routes:
  service: /service/**
  service2: /service2/**

3.在该module下的src/main/resources文件夹下,新建文件application.yml

六、启动服务

先启动discovery模块,再启动其他模块

在浏览器依次输入:

http://localhost:8081/
http://localhost:8082/service
http://localhost:8083/service2
http://localhost:8084/service/service
http://localhost:8084/service2/service2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 查看SpringBoot和JDK版本对应关系的方法

    查看SpringBoot和JDK版本对应关系的方法

    在进行一些自主学习的时候,发现使用maven方式创建的SpringBoot项目启动失败,最终发现是SpringBoot版本和JDK版本不对应导致的,所以本文就给大家介绍了如何查看SpringBoot和JDK版本的对应关系,需要的朋友可以参考下
    2024-03-03
  • Java中的指令重排详解

    Java中的指令重排详解

    在 Java 中,指令重排是一种性能优化技术,它涉及到编译器和处理器对程序中指令的执行顺序进行调整,以提高执行效率,本文给大家详细介绍了Java中的指令重排,需要的朋友可以参考下
    2023-12-12
  • 基于Java制作一个灯谜猜猜乐游戏

    基于Java制作一个灯谜猜猜乐游戏

    中秋佳节,是我国传统的重大节日之一,全国各地为了增强过节的气氛,都有许多传统的中秋活动,比如猜灯谜,所以本文就来用Java制作一个灯谜猜猜乐游戏,感兴趣的可以了解下
    2023-09-09
  • Maven 版本管理与 flatten-maven-plugin 插件的使用解析

    Maven 版本管理与 flatten-maven-plugin 插件的使用解析

    这篇文章主要介绍了Maven 版本管理与 flatten-maven-plugin 插件的使用解析,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Java令牌Token登录与退出的实现

    Java令牌Token登录与退出的实现

    这篇文章主要介绍了Java令牌Token登录与退出的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • JDBC的基本操作与Statement和PreparedStateMent使用区别分析

    JDBC的基本操作与Statement和PreparedStateMent使用区别分析

    这篇文章主要介绍了JDBC的基本操作与Statement和PreparedStateMent使用区别,Java Database Connectivity,它是代表一组独立于任何数据库管理系统(DBMS)的API,声明在java.sql与javax.sql包中,是SUN(现在Oracle)提供的一组接口规范
    2023-04-04
  • Jetty启动项目中引用json-lib相关类库报错ClassNotFound的解决方案

    Jetty启动项目中引用json-lib相关类库报错ClassNotFound的解决方案

    今天小编就为大家分享一篇关于Jetty启动项目中引用json-lib相关类库报错ClassNotFound的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 详解SpringBoot 快速整合Mybatis(去XML化+注解进阶)

    详解SpringBoot 快速整合Mybatis(去XML化+注解进阶)

    本篇文章主要介绍了详解SpringBoot 快速整合Mybatis(去XML化+注解进阶),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • IDEA中项目集成git提交代码的详细步骤

    IDEA中项目集成git提交代码的详细步骤

    这篇文章主要介绍了IDEA中项目集成git提交代码的详细步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Java中连接Mongodb进行增删改查的操作详解

    Java中连接Mongodb进行增删改查的操作详解

    MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案,本文给大家介绍了Java中连接Mongodb进行操作,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-06-06

最新评论