SpringCloud-day01-简介

1.spring cloud简介

  Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,均可以用Spring Boot的开发风格作到一键启动和部署。java

Spring Cloud并无重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,经过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。mysql

2.Spring Cloud组成

   Spring Cloud的子项目,大体可分红两类,
一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;
第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。
对于咱们想快速实践微服务的开发者来讲,第一类子项目就已经足够使用,如:
  • 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
  Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 作了二次封装,主要负责完成微服务架构中的服务治理功能。

3.参考资料

            https://projects.spring.io/spring-cloud/    springcloud项目官方主页git

 

             https://springcloud.cc/  springcloud中文网 有很详细的翻译文档 github

 

              http://springcloud.cn/  springcloud中文论坛 web

  

4.构建springcloud基础项目结构

   源码下载地址:https://github.com/bangbangw/wfd360-station (选择V1版本)spring

  

 

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

  

4.1父项目创建

  咱们开发项目,如今基本都用到maven,以及用父子项目,以及公共模块依赖,来构建方便扩展的项目体系;数据库

首先咱们创建父项目 wfd360-station,主要是一个pom,管理module,以及管理依赖,规范全部jar包版本等;apache

 

咱们Springcloud版本 用 Edgware.SR4浏览器

Springboot版本 用 1.5.13.RELEASE

 

修改pom.xml为:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.wfd360.station</groupId>
 8     <artifactId>wfd360-station</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10     <modules>
11         <module>microservice-common</module>
12         <module>microservice-station-provider-1001</module>
13         <module>microservice-station-consumer-80</module>
14     </modules>
15     <packaging>pom</packaging>
16     <properties>
17         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18         <maven.compiler.source>1.8</maven.compiler.source>
19         <maven.compiler.target>1.8</maven.compiler.target>
20         <druid.version>1.1.10</druid.version>
21     </properties>
22 
23     <dependencyManagement>
24         <dependencies>
25             <dependency>
26                 <groupId>org.springframework.cloud</groupId>
27                 <artifactId>spring-cloud-dependencies</artifactId>
28                 <version>Edgware.SR4</version>
29                 <type>pom</type>
30                 <scope>import</scope>
31             </dependency>
32             <dependency>
33                 <groupId>org.springframework.boot</groupId>
34                 <artifactId>spring-boot-dependencies</artifactId>
35                 <version>1.5.13.RELEASE</version>
36                 <type>pom</type>
37                 <scope>import</scope>
38             </dependency>
39             <!-- 链接池 -->
40             <dependency>
41                 <groupId>com.alibaba</groupId>
42                 <artifactId>druid</artifactId>
43                 <version>${druid.version}</version>
44             </dependency>
45         </dependencies>
46     </dependencyManagement>
47 
48 </project>
View Code

 

 这里引入了 springcloud 以及springboot  包括 druid链接池  以及 属性 规范编译 目标版本,包括链接池版本 编码等信息;

 4.2公共模块搭建

 咱们新建module公共模块项目 microservice-common,主要是放一些其余项目公用的东西,好比实体类,工具类等等;

 pom.xml 加下 jpa和 mysql驱动包依赖

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>wfd360-station</artifactId>
 7         <groupId>com.wfd360.station</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9     </parent>
10     <modelVersion>4.0.0</modelVersion>
11 
12     <artifactId>microservice-common</artifactId>
13     <packaging>jar</packaging>
14 
15     <dependencies>
16         <dependency>
17             <groupId>org.springframework.boot</groupId>
18             <artifactId>spring-boot-starter-data-jpa</artifactId>
19         </dependency>
20         <dependency>
21             <groupId>mysql</groupId>
22             <artifactId>mysql-connector-java</artifactId>
23         </dependency>
24     </dependencies>
25 
26 </project>
View Code

 

咱们新建Ticket实体

 1 package com.wfd360.model;
 2 
 3 import javax.persistence.*;
 4 import java.io.Serializable;
 5 
 6 /**
 7  * Created by admin on 2019/3/25.
 8  */
 9 @Entity
10 @Table(name="t_ticket")
11 public class Ticket implements Serializable {
12     /**
13      *序列号b vmvh
14      */
15     private static final long serialVersionUID = 1L;
16     @Id
17     @GeneratedValue
18     private Integer id;
19     /**
20      * 出发车站
21      */
22     @Column
23     private String startStation;
24     /**
25      * 到达车站
26      */
27     @Column
28     private String stopStation;
29     /**
30      * 票价
31      */
32     @Column
33     private Integer price;
34 
35 
36     public Integer getId() {
37         return id;
38     }
39 
40     public void setId(Integer id) {
41         this.id = id;
42     }
43 
44     public String getStartStation() {
45         return startStation;
46     }
47 
48     public void setStartStation(String startStation) {
49         this.startStation = startStation;
50     }
51 
52     public String getStopStation() {
53         return stopStation;
54     }
55 
56     public void setStopStation(String stopStation) {
57         this.stopStation = stopStation;
58     }
59 
60     public Integer getPrice() {
61         return price;
62     }
63 
64     public void setPrice(Integer price) {
65         this.price = price;
66     }
67 }
View Code

 

包括映射

固然咱们数据库里也提早建一个db_station数据库;

 

4.3microservice-ticket-provider-1001服务提供者项目创建

 咱们新建一个服务器提供者module子模块,相似前面建的common公共模块,名称是 microservice-ticket-provider-1001

 pom.xml为:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>wfd360-station</artifactId>
 7         <groupId>com.wfd360.station</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9     </parent>
10     <modelVersion>4.0.0</modelVersion>
11 
12     <artifactId>microservice-station-provider-1001</artifactId>
13 
14     <dependencies>
15         <dependency>
16             <groupId>com.wfd360.station</groupId>
17             <artifactId>microservice-common</artifactId>
18             <version>${project.version}</version>
19         </dependency>
20         <dependency>
21             <groupId>org.springframework.boot</groupId>
22             <artifactId>spring-boot-starter-web</artifactId>
23         </dependency>
24         <dependency>
25             <groupId>org.springframework.boot</groupId>
26             <artifactId>spring-boot-starter-data-jpa</artifactId>
27         </dependency>
28         <dependency>
29             <groupId>mysql</groupId>
30             <artifactId>mysql-connector-java</artifactId>
31         </dependency>
32         <dependency>
33             <groupId>org.springframework.boot</groupId>
34             <artifactId>spring-boot-starter-tomcat</artifactId>
35         </dependency>
36         <dependency>
37             <groupId>com.alibaba</groupId>
38             <artifactId>druid</artifactId>
39         </dependency>
40         <!-- 修改后当即生效,热部署 -->
41         <dependency>
42             <groupId>org.springframework</groupId>
43             <artifactId>springloaded</artifactId>
44         </dependency>
45         <dependency>
46             <groupId>org.springframework.boot</groupId>
47             <artifactId>spring-boot-devtools</artifactId>
48         </dependency>
49     </dependencies>
50 
51 
52 </project>
View Code

 

 该pom.xml中加common项目依赖,以及 springboot的 web jpa  驱动包 tomcat 链接池 配置 包括自动热部署配置。

 

application.yml配置:

 1 server:
 2   port: 1001
 3   context-path: /
 4 
 5 # 数据源配置
 6 spring:
 7   datasource:
 8     type: com.alibaba.druid.pool.DruidDataSource
 9     driver-class-name: com.mysql.jdbc.Driver
10     url: jdbc:mysql://localhost:3306/db_station
11     username: root
12     password: admin
13   jpa:
14     hibernate:
15       ddl-auto: update
16     show-sql: true
17   thymeleaf:
18     cache: false

 注意:空格

 

TicketRepository接口:
 1 package com.wfd360.repository;
 2 
 3 import com.wfd360.model.Ticket;
 4 import org.springframework.data.jpa.repository.JpaRepository;
 5 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 6 
 7 /**
 8  * Created by 姿式帝-博客园 on 2019/3/25.
 9  * 欢迎添加笔者wx(851298348)共同探讨、学习!
10  */
11 
12 public interface TicketRepository  extends
13         JpaRepository<Ticket, Integer>,JpaSpecificationExecutor<Ticket> {
14 }
View Code

 

TicketService接口:

 1 package com.wfd360.service;
 2 
 3 import com.wfd360.model.Ticket;
 4 
 5 import java.util.List;
 6 
 7 /**
 8  * Created by 姿式帝-博客园 on 2019/3/25.
 9  * 欢迎添加笔者wx(851298348)共同探讨、学习!
10  */
11 
12 public interface TicketService {
13     /**
14      * 添加或者修改车票信息
15      * @param student
16      */
17     public void save(Ticket student);
18 
19     /**
20      * 根据id查找车票信息
21      * @param id
22      * @return
23      */
24     public Ticket findById(Integer id);
25 
26     /**
27      * 查询车票信息
28      * @return
29      */
30     public List<Ticket> list();
31 
32     /**
33      * 根据id删除车票信息
34      * @param id
35      */
36     public void delete(Integer id);
37 }
View Code

 

TicketServiceImpl实现类:

 1 package com.wfd360.service.impl;
 2 
 3 import com.wfd360.model.Ticket;
 4 import com.wfd360.repository.TicketRepository;
 5 import com.wfd360.service.TicketService;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Service;
 8 
 9 import java.util.List;
10 
11 /**
12  * Created by 姿式帝-博客园 on 2019/3/25.
13  * 欢迎添加笔者wx(851298348)共同探讨、学习!
14  */
15 @Service
16 public class TicketServiceImpl implements TicketService {
17     @Autowired
18     private TicketRepository ticketRepository;
19 
20     @Override
21     public void save(Ticket student) {
22         ticketRepository.save(student);
23     }
24 
25     @Override
26     public Ticket findById(Integer id) {
27         return ticketRepository.findOne(id);
28     }
29 
30     @Override
31     public List<Ticket> list() {
32         return ticketRepository.findAll();
33     }
34 
35     @Override
36     public void delete(Integer id) {
37         ticketRepository.delete(id);
38     }
39 }
View Code

 

 TicketProviderController类:

 1 package com.wfd360.controller;
 2 
 3 import com.wfd360.model.Ticket;
 4 import com.wfd360.service.TicketService;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.bind.annotation.*;
 8 
 9 import java.util.List;
10 
11 /**
12  * Created by 姿式帝-博客园 on 2019/3/25.
13  * 欢迎添加笔者wx(851298348)共同探讨、学习!
14  */
15 @Controller
16 @RequestMapping("/ticket")
17 public class TicketController {
18     @Autowired
19     private TicketService ticketService;
20     /**
21      * 添加或者修改车票信息-V1111
22      * @param ticket
23      * @return
24      */
25     @PostMapping(value="/save")
26     @ResponseBody
27     public boolean save(Ticket ticket){
28         try{
29             ticketService.save(ticket);
30             return true;
31         }catch(Exception e){
32             return false;
33         }
34     }
35 
36     /**
37      * 查询车票信息
38      * @return
39      */
40     @GetMapping(value="/list")
41     @ResponseBody
42     public List<Ticket> list(){
43         List<Ticket> list = ticketService.list();
44         return list;
45     }
46 
47     /**
48      * 根据id查询车票信息
49      * @return
50      */
51     @GetMapping(value="/get/{id}")
52     @ResponseBody
53     public Ticket get(@PathVariable("id") Integer id){
54         return ticketService.findById(id);
55     }
56 
57     /**
58      * 根据id删除车票信息
59      * @return
60      */
61     @GetMapping(value="/delete/{id}")
62     @ResponseBody
63     public boolean delete(@PathVariable("id") Integer id){
64         try{
65             ticketService.delete(id);
66             return true;
67         }catch(Exception e){
68             return false;
69         }
70     }
71 }
View Code

 

启动类TicketProviderApplication_1001:

 1 package com.wfd360;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 /**
 7  * Created by 姿式帝-博客园 on 2019/3/25.
 8  * 欢迎添加笔者wx(851298348)共同探讨、学习!
 9  */
10 @SpringBootApplication
11 public class TicketProviderApplication_1001 {
12     /**
13      *
14      * @param args
15      */
16     public static void main(String[] args) {
17         SpringApplication.run(TicketProviderApplication_1001.class, args);
18 
19     }
20 }
View Code

 

咱们运行启动类,自动生成t_student表;

咱们加点数据,方便测试:

 

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

 

而后添加修改的话 咱们借用下 postman插件(请自行测试);

相关文章
相关标签/搜索