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服务可以独立地编译及 ...
随机推荐
- go延时队列
package main import ( "errors" "flag" "fmt" log "github.com/cihub ...
- SQLI DUMB SERIES-12
(1)检测闭合方式:在username上输入" admin" " 说明输入的username后还有双引号和括号 方法一: (2)通过其他途径知道用户名即可.如 输入&qu ...
- bootstrap modal 点击头部移动
$(".modal").each(function(){ $(this).draggable({ handle: ".modal-header" // 只能点击 ...
- 数组中只出现一次的数字(java实现)
问题描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 解题思路 如果数组中只有一个数字出现奇数次,则将数组中所有的数字做异或可得该数字. 数组中有两 ...
- Bootstrap 插件收集
Bootstrap-Mutilselect 将下拉选项扩展支持多选以及多种选择方式 http://davidstutz.de/bootstrap-multiselect/ Bootstrap Sel ...
- linux下误删目录文件后恢复神器extundelete
原文链接:https://blog.51cto.com/wzlinux/2052835 参考:https://blog.csdn.net/cwg_1992/article/details/463100 ...
- docker 学习(九) docker部署静态网站
一: dockerfile, 把Dockerfile和myfolder放在一个目录下: FROM httpd:2.4 COPY ./myfolder/ /usr/local/apache2/htdo ...
- C语言数据结构基础学习笔记——栈和队列
之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1: ...
- 第一课了解SQL
1.1 数据库基础 其实一直在使用这数据库,当你在邮箱中查询名字时,当在网站上进行搜索,在自动取款机上使用ATM卡,这些操作都是在使用数据库 1.1.1 数据库 数据库:保存有组织的数据的容器(通 ...
- (Android第一行代码实验一)活动的最佳实践
活动的最佳实践 1.知晓当前是在哪一个活动 这个技巧将教会你,如何根据程序当前的界面就能判断出这是哪一个活动. 首先需要新建一个 BaseActivity 继承自 Activi ...