新建父maven项目

groupId:pers.xzp.springCloud
artifactId:springCloud

父项目中仅仅需要一个pom文件,用于管理模块的依赖统一、继承等

编辑pom文件

首先项目包结构为:pom

添加依赖声明:依赖声明,不会引入依赖,只有当模块引入依赖坐标的时候才会引入响应依赖

<properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
   <java.version>1.8</java.version>
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
   <!--springcloud版本-->
   <spring-cloud.version>Finchley.SR2</spring-cloud.version>
   <springboot.version>2.0.6.RELEASE</springboot.version>
</properties>

<!-- dependencyManagement:帮助我们去管理坐标的版本:仅仅声明,不引入依赖-->
<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>

<dependencies>
   <!--springboot支持-->
   <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>
   <!--lombok-->
   <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <optional>true</optional>
   </dependency>
   <!--Devtools-->
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-devtools</artifactId>
       <!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖boot项目的项目如果想要使用devtools,需要重新引入 -->
       <!--<optional>true</optional>-->
   </dependency>
</dependencies>

<build>
   <plugins>
       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
           <configuration>
               <fork>true</fork>  <!-- 如果没有该生效标志,热部署的devtools不生效 -->
           </configuration>
       </plugin>
   </plugins>
</build>

创建Eureka注册中心模块

Eureka服务端作为服务注册中心

模块名:eureka-registryCenter,端口:7001

引入Eureka服务端依赖

<dependencies>
   <!--Eureka服务端支持-->
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
   </dependency>
</dependencies>

编辑核心配置文件

server:
 #端口
port: 7001
eureka:
instance:
   #服务注册中心实列的主机名
  hostname: localhost
server:
   #关闭自我保护机制,防止失效的服务也被访问
#   enable-self-preservation: false
   #该配置可以修改检查失效的服务器,每隔5s去扫描检查失效的服务 默认60s
  eviction-interval-timer-in-ms: 5000
client:
   #是否向服务注册中心注册自己 自己注册了自己就是有毛病
  register-with-eureka: false
   #是否监测服务 翻译:获取注册
  fetch-registry: false
   #服务注册中心的配置内容,指定服务注册中心的位置
  service-url:
     #单机配置 就是访问注册中心的路径
    defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

创建项目引导类

作为Eureka服务端的引导类,需要被@EnableEurekaServer标注

//@EnableEurekaServer:标注的类表示Eureka服务端,作为注册中心
@EnableEurekaServer
@SpringBootApplication
public class RegistryCenter_7001 {
   public static void main(String[] args) {
       SpringApplication.run(RegistryCenter_7001.class);
  }
}

创建Eureka客户端:服务提供者

模块名字:provider-payment8001 端口号:8001

引入Eureka客户端依赖

<!--eureka客户端支持  我们去写支付功能 服务-->
<dependencies>
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
   </dependency>
</dependencies>

编辑核心配置文件

server:
port: 8001
# Eureka客户端取别名
spring:
application:
  name: payment
eureka:
client:
  service-url:
     # 注册Eureka客户端到服务注册中心 需要与注册中心配置对应
    defaultZone: http://localhost:7001/eureka

编码

实体类
@Data
public class User implements Serializable {
   private int id;
   private String name;
   @DateTimeFormat(pattern = "yyyy-MM-dd")
   private Date birthday;

   public User(int id, String name, Date birthday) {
       this.id = id;
       this.name = name;
       this.birthday = birthday;
  }

   public User() {
  }
}
Controller控制器
//@Slf4j:使用log4j日志需要,默认生成log实例
@Slf4j
@Controller
public class UserController {

   private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
   @GetMapping("/getalluser")
   @ResponseBody
   public  String getAllUser(){
       User user = null;
       try {
           user = new User(1,"张三",sdf.parse("2020-10-10"));
      } catch (ParseException e) {
           log.debug("日期类型转换失败");
      }
       return user.toString();
  }
}

测试

有服务端和客户端,类似WebSocket编程,需要我们先启动服务端;

因此,我们需要先启动Eureka注册中心eureka-registryCenter,然后在启动Eureka客户端provider-payment8001

浏览器输入:http://localhost:7001,会进入了Eureka服务注册中心

输入:http://localhost:8001/getalluser,会访问到服务提供者的数据

输入:http://localhost:7001/getalluser

小结

注册中心可以类比tomcat管理javaweb应用

Eureka有服务端和客户端概念,可以参考WebSocket编程

springCloud项目搭建的更多相关文章

  1. spring-cloud项目搭建

    springCloud项目搭建手册 springcloud应用场景及微服务框架发展趋势 Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断 ...

  2. 微服务SpringCloud项目架构搭建入门

    Spring的微服务框架SpringCloud受到众多公司欢迎,给大家带来一篇框架搭建入门.本次采用的版本是Spring Cloud版本为Finchley.RELEASE. 一.SpringCloud ...

  3. SpringCloud(7)---网关概念、Zuul项目搭建

    SpringCloud(7)---网关概念.Zuul项目搭建 一.网关概念 1.什么是路由网关 网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求.鉴权.监控. ...

  4. 基于idea的springcloud的helloworld项目搭建过程整理

    Springcloud的搭建主要包括三个部分:服务注册中心.服务提供者.服务消费者.每一个部分都是一个springboot项目,它们通过配置文件(application.properties或appl ...

  5. 一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目

    在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内容,新写了本章节,先教大家在工作中如何搭建一个多模块的spr ...

  6. 「开源」SpringCloud+vue搭建的商城项目

    最近在研究SpringCloud,看到一个基于SpringCloud+vue搭建的模拟商城项目.用来辅助学习SpringCloud企业级开发还是很有帮助的.强烈推荐!! 源码地址在最后. spring ...

  7. 基于springcloud框架搭建项目-Eureka篇(一)

    springcloud项目近年来算是很流行的了,不少公司项目目前都用到了,毕竟优点很多,刚好公司项目用到了,根据自己的理解,简单搭建一下,以便以后学习 这里简单的介绍一下它: SpringCloud, ...

  8. 从零搭建一个SpringCloud项目之Feign搭建

    从零搭建一个SpringCloud项目之Feign搭建 工程简述 目的:实现trade服务通过feign调用user服务的功能.因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要 ...

  9. 搭建简单的SpringCloud项目三:问题及解决

    GitHub:https://github.com/ownzyuan/test-cloud 前篇:搭建简单的SpringCloud项目一:注册中心和公共层 搭建简单的SpringCloud项目二:服务 ...

随机推荐

  1. googleEarth

    中国航天科技集团有限公司 http://www.spacechina.com/n25/n144/n210/index.html Celestia [官网]: https://celestia.spac ...

  2. HDU多校-1004-Vacation(思维)

    Tom and Jerry are going on a vacation. They are now driving on a one-way road and several cars are i ...

  3. C#知识点:抽象类和接口浅谈

    首先介绍什么是抽象类? 抽象类用关键字abstract修饰的类就是叫抽象类,抽象类天生的作用就是被继承的,所以不能实例化,只能被继承.而且 abstract 关键字不能和sealed一起使用,因为se ...

  4. Linux下vim的安装及配置

    目录 一.vim的下载 二.vim的基本知识 三.vim的基本配置 四.vim与外部文件的复制粘贴 一.vim的下载 Ubuntu系统,输入命令: sudo apt install vim Cento ...

  5. vue父子传值与非父子传值

    大概梳理下传值的几种方式 一:父子组件传值 props方式 子组件对外暴露方法并向父组件传递由于触发方法导致的值的变化,父组件接收子组件传递来的值:子组件接收父组件传递来的值,并根据传递来的值在子组件 ...

  6. 文件操作和OS模块的简单操作

    文件的作用 大家应该听说过一句话:“好记性不如烂笔头”. 不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电 ...

  7. Java I/O流 复制文件速度对比

    Java I/O流 复制文件速度对比 首先来说明如何使用Java的IO流实现文件的复制: 第一步肯定是要获取文件 这里使用字节流,一会我们会对视频进行复制(视频为非文本文件,故使用之) FileInp ...

  8. Spring AOP-用代理代替繁琐逻辑

    Spring AOP 基础概念 AOP 是一种面向切面的编程思想,通俗来讲,这里假如我们有多个方法. @Component public class Demo { public void say1() ...

  9. [LeetCode]23. 合并K个排序链表(优先队列;分治待做)

    题目 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: 1 ...

  10. Angular用户输入

    用户输入 事件绑定 使用 (event) on-event 概念 ​ 用户操作 -> DOM事件 用户操作 点击链接 按下按钮 输入文字 DOM事件 $event 类型 any 不能推测属性 可 ...