在开始学习使用SpringCloud进行开发之前,我们先来了解一下什么是“服务提供者”和“服务消费者”,然后分别编写一个简单的“服务提供者”和“服务消费者”。
一、概念
我们拿第一篇博文《【Spring Cloud总结】1.微服务架构概述》中的电影销售系统的架构来对服务提供者和消费者进行一个定位:

可以看到,当用户访问电影购票系统时,首先访问的是前置系统“电影微服务”,而电影微服务在进行出票的过程中,需要获取用户之前注册的用户信息,此时就需要调用用户微服务的服务,来获取用户信息。这里电影微服务就是“服务消费者”,而用户微服务就是“服务提供者”,电影微服务需要消费用户查询服务,而用户微服务提供了用户查询服务。
有关“服务消费者”和“服务提供者”的定义:

二、编写一个服务提供者
首先我们来编写一个简单的服务提供者样例工程。这里我们直接通过Spring官网提供的构建工具来创建一个SpringBoot工程。打开https://start.spring.io/:

这里填写我们需要的信息,其中系统构建使用Maven,编程语言使用Java,SpringBoot使用最新2.2.0(SNAPSHOT快照)版本,Group和Artifact定义为微服务Demo的相关信息:“com.microserver.cloud”、“microserver-simple-provider-user”。
最后需要一些依赖,web、jpa以及H2:

其中web是我们需要的Spring-web,用于支持Web开发;jpa是Spring-jpa是持久层框架,用于操作数据库;H2是H2数据库,内置数据库,用来做一些数据的展示。
点击“Generate Project”按钮,来构建一个基于Spring boot的一个Project。此时会弹出一个Zip压缩包供我们下载,下载完毕后得到一个文件:

我们将该压缩文件解压,准备导入IDE。
打开Spring Tool Suite,这里JDK和Maven按照之前的约定配置好,点击Import将上面的工程导入进去:



导入后,我们可以看到工程的整个结构:

我们查看一下POM文件:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.microserver.cloud</groupId>
<artifactId>microserver-simple-provider-user</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>microserver-simple-provider-user</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
可以看到,SpringBoot的版本就使我们之前选择的2.2.0-SNAPSHOT版本,然后也引入了web、jpa和H2的相关依赖。最上面的src下,生成了一个默认的MicroserverSimpleProviderUserApplication.java类:
package com.microserver.cloud.microserversimpleprovideruser;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MicroserverSimpleProviderUserApplication {
public static void main(String[] args) {
SpringApplication.run(MicroserverSimpleProviderUserApplication.class, args);
}
}
该类用于加载默认启动项,并启动SpringBoot工程。
下面开始开发服务提供者。首先我们编写一个SQL文件用于建表,在src/main/resource下创建一个schema.sql,存储建表语句:
暂无评论