SpringCloud-day01-简介
1.spring cloud简介
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
2.Spring Cloud组成
- Spring Cloud Netflix
是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。
- Spring Cloud Config
将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件
- Spring Cloud Bus
分布式消息队列,是对Kafka, MQ的封装
- Spring Cloud Security
对Spring Security的封装,并能配合Netflix使用
- Spring Cloud Zookeeper
对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用
- Spring Cloud Eureka
3.参考资料
https://projects.spring.io/spring-cloud/ springcloud项目官方主页
https://springcloud.cc/ springcloud中文网 有很详细的翻译文档
http://springcloud.cn/ springcloud中文论坛

4.构建springcloud基础项目结构
源码下载地址:https://github.com/bangbangw/wfd360-station (选择V1版本)

构建完成后的项目结构如图:

4.1父项目建立
我们开发项目,现在基本都用到maven,以及用父子项目,以及公共模块依赖,来构建方便扩展的项目体系;
首先我们建立父项目 wfd360-station,主要是一个pom,管理module,以及管理依赖,规范所有jar包版本等;
我们Springcloud版本 用 Edgware.SR4
Springboot版本 用 1.5.13.RELEASE
修改pom.xml为:
<?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.wfd360.station</groupId>
<artifactId>wfd360-station</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>microservice-common</module>
<module>microservice-station-provider-1001</module>
<module>microservice-station-consumer-80</module>
</modules>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<druid.version>1.1.10</druid.version>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.13.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
</dependencyManagement> </project>
这里引入了 springcloud 以及springboot 包括 druid连接池 以及 属性 规范编译 目标版本,包括连接池版本 编码等信息;
4.2公共模块搭建
我们新建module公共模块项目 microservice-common,主要是放一些其他项目公用的东西,比如实体类,工具类等等;
pom.xml 加下 jpa和 mysql驱动包依赖
<?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>wfd360-station</artifactId>
<groupId>com.wfd360.station</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>microservice-common</artifactId>
<packaging>jar</packaging> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies> </project>
我们新建Ticket实体
package com.wfd360.model; import javax.persistence.*;
import java.io.Serializable; /**
* Created by admin on 2019/3/25.
*/
@Entity
@Table(name="t_ticket")
public class Ticket implements Serializable {
/**
*序列号b vmvh
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer id;
/**
* 出发车站
*/
@Column
private String startStation;
/**
* 到达车站
*/
@Column
private String stopStation;
/**
* 票价
*/
@Column
private Integer price; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getStartStation() {
return startStation;
} public void setStartStation(String startStation) {
this.startStation = startStation;
} public String getStopStation() {
return stopStation;
} public void setStopStation(String stopStation) {
this.stopStation = stopStation;
} public Integer getPrice() {
return price;
} public void setPrice(Integer price) {
this.price = price;
}
}
包括映射
当然我们数据库里也提前建一个db_station数据库;
4.3microservice-ticket-provider-1001服务提供者项目建立
我们新建一个服务器提供者module子模块,类似前面建的common公共模块,名称是 microservice-ticket-provider-1001
pom.xml为:
<?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>wfd360-station</artifactId>
<groupId>com.wfd360.station</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>microservice-station-provider-1001</artifactId> <dependencies>
<dependency>
<groupId>com.wfd360.station</groupId>
<artifactId>microservice-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</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>
该pom.xml中加common项目依赖,以及 springboot的 web jpa 驱动包 tomcat 连接池 配置 包括自动热部署配置。
application.yml配置:
server:
port: 1001
context-path: / # 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_station
username: root
password: admin
jpa:
hibernate:
ddl-auto: update
show-sql: true
thymeleaf:
cache: false
注意:空格
TicketRepository接口:
package com.wfd360.repository; import com.wfd360.model.Ticket;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; /**
* Created by 姿势帝-博客园 on 2019/3/25.
* 欢迎添加笔者wx(851298348)共同探讨、学习!
*/ public interface TicketRepository extends
JpaRepository<Ticket, Integer>,JpaSpecificationExecutor<Ticket> {
}
TicketService接口:
package com.wfd360.service; import com.wfd360.model.Ticket; import java.util.List; /**
* Created by 姿势帝-博客园 on 2019/3/25.
* 欢迎添加笔者wx(851298348)共同探讨、学习!
*/ public interface TicketService {
/**
* 添加或者修改车票信息
* @param student
*/
public void save(Ticket student); /**
* 根据id查找车票信息
* @param id
* @return
*/
public Ticket findById(Integer id); /**
* 查询车票信息
* @return
*/
public List<Ticket> list(); /**
* 根据id删除车票信息
* @param id
*/
public void delete(Integer id);
}
TicketServiceImpl实现类:
package com.wfd360.service.impl; import com.wfd360.model.Ticket;
import com.wfd360.repository.TicketRepository;
import com.wfd360.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; /**
* Created by 姿势帝-博客园 on 2019/3/25.
* 欢迎添加笔者wx(851298348)共同探讨、学习!
*/
@Service
public class TicketServiceImpl implements TicketService {
@Autowired
private TicketRepository ticketRepository; @Override
public void save(Ticket student) {
ticketRepository.save(student);
} @Override
public Ticket findById(Integer id) {
return ticketRepository.findOne(id);
} @Override
public List<Ticket> list() {
return ticketRepository.findAll();
} @Override
public void delete(Integer id) {
ticketRepository.delete(id);
}
}
TicketProviderController类:
package com.wfd360.controller; import com.wfd360.model.Ticket;
import com.wfd360.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import java.util.List; /**
* Created by 姿势帝-博客园 on 2019/3/25.
* 欢迎添加笔者wx(851298348)共同探讨、学习!
*/
@Controller
@RequestMapping("/ticket")
public class TicketController {
@Autowired
private TicketService ticketService;
/**
* 添加或者修改车票信息-V1111
* @param ticket
* @return
*/
@PostMapping(value="/save")
@ResponseBody
public boolean save(Ticket ticket){
try{
ticketService.save(ticket);
return true;
}catch(Exception e){
return false;
}
} /**
* 查询车票信息
* @return
*/
@GetMapping(value="/list")
@ResponseBody
public List<Ticket> list(){
List<Ticket> list = ticketService.list();
return list;
} /**
* 根据id查询车票信息
* @return
*/
@GetMapping(value="/get/{id}")
@ResponseBody
public Ticket get(@PathVariable("id") Integer id){
return ticketService.findById(id);
} /**
* 根据id删除车票信息
* @return
*/
@GetMapping(value="/delete/{id}")
@ResponseBody
public boolean delete(@PathVariable("id") Integer id){
try{
ticketService.delete(id);
return true;
}catch(Exception e){
return false;
}
}
}
启动类TicketProviderApplication_1001:
package com.wfd360; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* Created by 姿势帝-博客园 on 2019/3/25.
* 欢迎添加笔者wx(851298348)共同探讨、学习!
*/
@SpringBootApplication
public class TicketProviderApplication_1001 {
/**
*
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(TicketProviderApplication_1001.class, args); }
}
我们运行启动类,自动生成t_student表;
我们加点数据,方便测试:

浏览器请求:http://localhost:1001/ticket/list

然后添加修改的话 我们借用下 postman插件(请自行测试);
SpringCloud-day01-简介的更多相关文章
- SpringCloud Alibaba 简介
SpringCloud Aliababa简介 SpringCloud Alibaba是阿里巴巴集团开源的一套微服务架构解决方案. 微服务架构是为了更好的分布式系统开发,将一个应用拆分成多个子应用,每一 ...
- SpringCloud系列一:SpringCloud的简介和架构
一.SpringCloud简介 SpringCloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架,那么它本身不会提供具体功能性的操作,更专注于服务之间的通讯.熔断.监控等.因此就需要很多 ...
- springcloud之简介
springcloud官方文档翻译网站:https://springcloud.cc/ 一.网站架构的演变过程.(这些架构描述的不是很到位,之后需要从新学习) 传统架构 —> 分布式架构 —&g ...
- Netflix OSS 和 SpringCloud Netflix简介
Netflix OSS Netflix是一家互联网流媒体播放商,是美国视频巨头,随着Netflix转型为一家云计算公司,它也开始积极参与开源项目. Netflix OSS(Open Source)就是 ...
- 11.8 Springcloud项目简介
各位领导好,我从毕业后做了两年Java开发工程师,刚开始都是一些SSM框架的项目,但是由于技术不断更新,微服项目成为必然的趋势,大约在做了1年的SSM框架,之后开始接触微服项目,前后经理过Dubbo和 ...
- 【微框架】之一:从零开始,轻松搞定SpringCloud微框架系列--开山篇(spring boot 小demo)
Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现 Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ...
- SpringCloud微框架系列整体模块梳理
以下为Spring Cloud的核心功能: 分布式/版本化配置服务注册和发现路由服务和服务之间的调用负载均衡断路器分布式消息传递 通过这张图,我们来了解一下各组件配置使用运行流程: 1.请求统一通过A ...
- SpringCloud Gateway入门
本文是介绍一下SpringCloud Gateway简单路由转发使用. SpringCloud Gateway简介 SpringCloud是基于Spring Framework 5,Project R ...
- springcloud-知识点总结(三):Hystrix & Dashboard & turbine & Zuul & SpringCloud Config
1.Hystrix断路器简介 Hystrix断路器简介 hystrix对应的中文名字是“豪猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与hystrix本身的功能不谋而合,因 ...
- SpringCloud组件和概念介绍1
一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及 ...
随机推荐
- 基于redis的延迟消息队列设计(转)
需求背景 用户下订单成功之后隔20分钟给用户发送上门服务通知短信 订单完成一个小时之后通知用户对上门服务进行评价 业务执行失败之后隔10分钟重试一次 类似的场景比较多 简单的处理方式就是使用定时任务 ...
- docker下运行labview2010
前言 本人笔记本用kali,因课程需要,要在Linux下运行Labview,找到了2010的iso,但只支持rehat系列的发行版,用rpm转化deb的方案不可行,尝试了在virtualbox下运行w ...
- CodeForces - 660D:Number of Parallelograms (问N个点多少个平行四边形)
pro:给定N个点,问多少个点组成了平行四边形.保证没有三点共线. sol:由于没有三点贡献,所以我们枚举对角线,对角线的中点重合的就是平行四边形.如果没说保证三点不共线就不能这么做,因为有可能4个点 ...
- 转-软件测试人员在工作中如何运用Linux
从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到. 对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux ...
- mybatis插入数据后返回对象id
1.插入的为对象,成功插入后,会返回到指定的字段id中,@Options(useGeneratedKeys=true,keyColumn="id").
- svn安装时遇到问题总结
问题1: 一番折腾终于解决了,现将解决方法总结一下: 1.点击Window键+R键,如下图: 2.输入services.msc命令,然后点击“确定”,得到下图: 3.找到并选中“Windows Man ...
- 巧妇难为无米之炊( Model数据)
一.相隔万里的客户端服务器数据交互 请求头发过去的轻量级文本数据,后台根据这些信息处理 response返回的如果时html的话,那么是全局刷新 在ajax中data回调获得了数据,然后操作dom进 ...
- day053 url反向解析图解 模板渲染
一.语法 两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二.变量 1. 可直接用 {{ 变量名 }} (可调用字符串, 数字 ,列表,字典,对象等) ...
- lsof一些使用
查看某进程和哪些文件相关 [root@linux-node2 ~]# netstat -lntp Active Internet connections (only servers) Proto Re ...
- easyUI默认图标的使用
使用格式如下: <table id="table" class="easyui-datagrid" style="width:600px;hei ...