新建一个springcloud小项目
创建父项目
基本父项目搭建,父项目作为下面微服务的统一调配整合者,不需要确切的运行方式和打包,所以采用pom项目的形式。
基本项目无需确切的启动方式和其他工具插件,所以在项目依赖设置中不做操作。
创建完成后,项目下只有一个pom文件,由于是基于springboo快速搭建的,所以打包方式是默认为jar,但是正如前面所说,父项目是不需要打包的,所以要手动修改打包方式为pom。
创建子项目
子项目要求继承父项目的pom依赖,所以子项目建立时候,采用maven项目创建会使后期修改变得容易一些,如果是采用spring initializr方式创建,则会又一次继承springboot,修改起来就较为麻烦
子项目通讯
不同子项目之间是需要restTemplate协议来通信调用的。
增加配置类
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);//ms
factory.setConnectTimeout(15000);//ms
return factory;
}
}
然后在某一个子项目中注入调用
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/add")
public String order(){
System.out.println("下订单");
String msg = restTemplate.getForObject("http://localhost:8082/stock/reduce", String.class);
return "订单成功" + msg;
}
spring cloud alibaba 版本
版本说明: 版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub
本次使用的最新稳定版本
但是pom同样是无法多继承的,我们的父项目的pom是继承了spring boot的依赖,所以要想在继承spring cloud alibaba 的依赖就要借用maven的dependencyManagement来实现
<!--通过dependencyManagement来继承阿里巴巴的spring cloud-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.7.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
当然,spring boot,spring cloud都可以是用这种方式进行版本管理,所以父项目的pom文件中展示如下:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR12</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
阿里云同样提供了类似于初始化的脚手架的功能,只需要把spring initializr的地址改为阿里云的地址[https://start.aliyun.com/]即可