SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具集(全家桶)。
SpringCloud拥有SpringBoot的特点。
大部分spring软件的版本是以:主版本.次版本.增量版本.里程碑版本的形式命名。
SpringCloudAngelSR6
Angel是SpringCloud的一个大版本,ServiceRelease6版本,标识一个bug修复的版本。
1)、约定优于配置
2)、开箱即用、快速启动
3)、适用于各种环境(PCServer、云环境、Subtopic、容器Docker)
4)、轻量级的组件(如服务发现中整合的Eureka)
5)、组件支持很丰富、功能很齐全(如提供配置中心、注册中心、智能路由…)
6)、选型中立(服务发现中使用Eureka、Zookeeper、Consul等都可以)
1、java(scala、Groovy…均可)
2、构建工具
1)、Maven
2)、Gradle
将maven项目转换成gradle项目:(在pom文件的上一级目录执行如下命令,使用cmd操作)
gradleinit--typepom
1、原则:使用最新的版本进行讲解
2、JDK1.8
3、Maven3.3.9
4、IDE(SpringToolSuite3.8.2、IDEA、Eclipse)
5、SpringBoot
6、SpringCloudCamdenSR1
建议:大家学习时,尽量使用相同的版本进行选择,避免采坑
SpringCloud学习(二):开始使用SpringCloud实战微服务
创建存在调用关系的微服务,调用关系如下
服务消费者:服务的调用方,调用别的微服务的微服务(即:依赖其他服务的服务)
服务提供者:服务的被调用方,提供API的微服务(即:为其他服务提供服务的服务)
填写信息:
(1)、将生成的maven工程导入eclipse
然后一次创建如下选中的类和配置文件。
(2)、data.sql和schema.sql
1server:2#服务器端口号3port:69004spring:5jpa:6#是否生成ddl语句7generate-ddl:false8#是否打印sql语句9show-sql:true10hibernate:11#自动生成ddl,由于指定了具体的ddl,此处设置为none12ddl-auto:none13datasource:14#使用H2数据库15platform:h216#指定生成数据库的schema文件位置17schema:classpath:schema.sql18#指定插入数据库语句的脚本位置19data:classpath:data.sql2021#配置日志打印信息22logging:23level:24root:INFO25org.hibernate:INFO26org.hibernate.type.descriptor.sql.BasicBinder:TRACE27org.hibernate.type.descriptor.sql.BasicExtractor:TRACE28com.itmuch:DEBUGschema.sql(4)、创建UserController
(7)、执行MicroserviceSimpleProviderUserApplication类,然后进行访问测试
(2)、配置文件application.yml
server:port:6901(3)、创建GoodsController
其中11-16行表示注入的Bean
1packagecom.mmzs.cloud;23importorg.springframework.boot.SpringApplication;4importorg.springframework.boot.autoconfigure.SpringBootApplication;5importorg.springframework.context.annotation.Bean;6importorg.springframework.web.client.RestTemplate;78@SpringBootApplication9publicclassMicroserviceSimpleConsumerGoodsApplication{1011@Bean12publicRestTemplaterestTemplate(){13returnnewRestTemplate();14}15//12、13、14、行相当于16行16//privateRestTemplaterestTemplate=newRestTemplate();1718publicstaticvoidmain(String[]args){19SpringApplication.run(MicroserviceSimpleConsumerGoodsApplication.class,args);20}21}MicroserviceSimpleConsumerGoodsApplication(5)、执行MicroserviceSimpleConsumerGoodsApplication类,然后进行访问测试
主要优化的点是在GoodsController类中的硬编码部分。简单优化如下:
@RestControllerpublicclassGoodsController{@AutowiredprivateRestTemplaterestTemplate;//优化部分@Value("${user.userServicePath}")privateStringuserServicePath;//优化后此处的硬编码字符串,修改为变量获取@GetMapping("/goods/{id}")publicUserfindById(@PathVariableLongid){//采用了硬编码注册user服务returnthis.restTemplate.getForObject(this.userServicePath+id,User.class);}}这样子的话,userServicePath的具体值需要通过配置文件application.yml来配置,故application.yml文件修改为: