json schema生成工具_SpringCloud快速构建分布式系统的工具集(全家桶)

一、开始使用Spring Cloud实战微服务

1、SpringCloud是什么?

云计算的解决方案?不是

SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具集(全家桶)。

SpringCloud拥有SpringBoot的特点。

2、关于SpringCloud的版本?

大部分spring软件的版本是以:主版本.次版本.增量版本.里程碑版本的形式命名。

Spring Cloud Angel SR6???

Angel是SpringCloud的一个大版本,Service Release6版本,标识一个bug修复的版本。

3、SpringCloud的特点?

1)、约定优于配置

2)、开箱即用、快速启动

3)、适用于各种环境(PC Server、云环境、Subtopic、容器Docker)

4)、轻量级的组件(如服务发现中整合的Eureka)

5)、组件支持很丰富、功能很齐全(如提供配置中心、注册中心、智能路由…)

6)、选型中立(服务发现中使用Eureka、Zookeeper、Consul等都可以)

二、需要的技术储备

1、java(scala、Groovy…均可)

2、构建工具

1)、Maven

2)、Gradle

将maven项目转换成gradle项目:(在pom文件的上一级目录执行如下命令,使用cmd操作)

gradle init --type pom

3)、SpringBoot:http://cnblogs.com/mmzs/category/1192166.html

三、使用的软件版本

1、原则:使用最新的版本进行讲解

2、JDK 1.8

3、Maven 3.3.9

4、IDE(Spring Tool Suite 3.8.2、IDEA、Eclipse)

5、Spring Boot

6、SpringCloud Camden SR1

建议:大家学习时,尽量使用相同的版本进行选择,避免采坑

四、创建工程

1、创建调用关系的微服务

创建存在调用关系的微服务,调用关系如下

302d2181aa7bae558f566072b9c73c38.png

服务消费者:服务的调用方,调用别的微服务的微服务(即:依赖其他服务的服务)

服务提供者:服务的被调用方,提供API的微服务(即:为其他服务提供服务的服务)

2、编写一个服务提供者

登陆:http://start.spring.io/

填写信息:

5301a41494f0b1136f27960ed1f49cfb.png

(1)、将生成的maven工程导入eclipse

然后一次创建如下选中的类和配置文件。

2afa94114f7353d447eda781bdf73f3c.png

(2)、data.sql和schema.sql

data.sql

schema.sql

(3)、配置文件application.yml

schema.sql

(4)、创建UserController

UserController

(5)、创建UserRepository

UserRepository

(6)、创建实体类User

User

注:此处采用的是jpa,使用的是h2数据库,如果访问时出现实体类转化json格式错误,则需要在实体类前面加上如下这句注释:

@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })

错误提示:disable SerializationFeature.FAIL_ON_EMPTY_BEANS

(7)、执行MicroserviceSimpleProviderUserApplication类,然后进行访问测试

053181262afe51533169f916019e28cf.png

3、编写一个服务消费者

登陆:http://start.spring.io/

填写信息:

c05a666002b9a72287c6745082677bc8.png

(1)、将生成的maven工程导入eclipse

然后一次创建如下选中的类和配置文件。

c88a6912d8da2bbbeea5c26253f0457f.png

(2)、配置文件application.yml

server:

port: 6901

(3)、创建GoodsController

GoodsController

(4)、创建实体类User

User

(5)、在MicroserviceSimpleConsumerGoodsApplication类中注入Bean

其中11-16行表示注入的Bean

MicroserviceSimpleConsumerGoodsApplication

(5)、执行MicroserviceSimpleConsumerGoodsApplication类,然后进行访问测试

589f0730a484692f18b69dd6ab61111d.png

4、小小优化一下

主要优化的点是在GoodsController类中的硬编码部分。简单优化如下:

@RestController

public class GoodsController {

@Autowired

private RestTemplate restTemplate;

//优化部分

@Value("${user.userServicePath}")

private String userServicePath;

//优化后此处的硬编码字符串,修改为变量获取

@GetMapping("/goods/{id}")

public User findById(@PathVariable Long id) {

//采用了硬编码注册user服务

return this.restTemplate.getForObject(this.userServicePath + id, User.class);

}

}

这样子的话,userServicePath的具体值需要通过配置文件application.yml来配置,故application.yml文件修改为:

server:

port: 6901

# 优化部分

user:

userServicePath: http://localhost:6900/user/

注: 其实这样子的优化也不是很好,因为当微服务过多时,层层调用,需要修改的部分也会越来越多,不便于维护和修改。具体措施,详见下回分解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值