搭建springcloudalibaba项目
为什么会出现SpringCloudAlibaba
由于Springcloud的NetFlix项目的全套的服务进入了停止维护的模式,也就是Springcloud团队不会再向模块添加新功能,不在开发新的组件和功能了。
什么是SpringCloudAlibaba
Spring Cloud For Alibaba,它是由一些阿里巴巴的开源组件和云产品组成的,这个项目的目的就是为了让大家所熟知的Spring框架,其优秀的设计模式和抽象理念,以给阿里巴巴产品的java开发者带来使用Spring Boot和Spring Cloud的更多便利。
SpringCloudAlibaba能干嘛
-
服务注册与发现:适配Spring Cloud服务注册与发现标准,默认集成了Ribbon 的支持。
-
分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
-
服务限流降级:默认支持Serlet. Feign RestTemplate. Dubbo 和RocketMQ限流降级功能的接 入,可以在运行时通过控制台实时修改限流库级规则,还支持查看限流降级Metrics监控。
-
消息驱动能力:基于Spring Cloud Stream为微服务应用构建消息驱动能力。
-
阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任琴型的数据。分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于Cron表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有Worker (schedulenx-client) 上执行。
SpringCloudAlibaba都有哪些组件
-
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
-
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
-
RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
-
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
-
Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
-
Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。
-
Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
-
Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
-
Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
创建项目
创建父项目
-
创建一个
空文件夹 springcloudalibaba-test(名字按照实际需求)
用来装子项目 -
新建
maven项目 my-dependencies
用于父工程配置pom包信息
- 项目结构:
- my-dependencies pom.xml 配置文件
<?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>
<groupId>com.zl</groupId>
<artifactId>my-dependencies</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>dependencies</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<properties>
<!-- Environment Settings -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- DB Setting -->
<freemarker.version>2.3.28</freemarker.version>
<mybatis.plus.version>3.3.1</mybatis.plus.version>
<druid.version>1.1.21</druid.version>
<pgsql.version>9.4.1212</pgsql.version>
<ojdbc.version>19.3.0.0</ojdbc.version>
<mybatis.plus.dynamic.version>3.0.0</mybatis.plus.dynamic.version>
<!-- redisson Setting -->
<redisson.version>3.11.4</redisson.version>
<!-- swagger -->
<swagger.version>2.9.2</swagger.version>
<swagger.annotations.version>1.5.21</swagger.annotations.version>
<!-- Elastic Job Settings-->
<curator.version>2.10.0</curator.version>
<elastic.job.version>2.1.5</elastic.job.version>
<!-- txlcn Settings-->
<txlcn.version>5.0.2.RELEASE</txlcn.version>
<!-- Spring Settings -->
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
<!-- util -->
<transmittable.version>2.11.0</transmittable.version>
<hutool.all.version>5.3.9</hutool.all.version>
<guava.version>23.0</guava.version>
<viptool.version>1.0.2</viptool.version>
<commons-csv.version>1.5</commons-csv.version>
<minio.version>3.0.10</minio.version>
<orai18n.version>12.1.0.2.0</orai18n.version>
<poi.version>4.1.2</poi.version>
<skipTests>true</skipTests>
<jjwt.version>0.9.1</jjwt.version>
<micrometer-jvm-extras.version>0.2.2</micrometer-jvm-extras.version>
<!-- 沃壤 -->
<sipsdx.worang.version>3.1.0</sipsdx.worang.version>
<validation-api.version>1.0.0</validation-api.version>
<!-- sa-token -->
<sa-token.version>1.29.0</sa-token.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!-- Compiler 插件, 设定 JDK 版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<!-- 打包 jar 文件时,配置 manifest 文件,加入 lib 包的 jar 依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
<executions>
<execution>
<configuration>
<archive>
<manifest>
<!-- Add directory entries -->
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
<!-- resource -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<!-- install -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
</plugin>
<!-- clean -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
</plugin>
<!-- ant -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
</plugin>
<!-- dependency -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- Java Document Generate -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<!-- 资源文件配置 -->
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>osgeo</id>
<name>OSGeo Release Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
<snapshots><enabled>false</enabled></snapshots>
<releases><enabled>true</enabled></releases>
</repository>
<!-- 有多个副本,减少重复代码 -->
<repository>
<id>repo-mirror</id>
<url>https://simulation.tudelft.nl/maven/</url>
</repository>
<repository>
<id>aliyun-repos</id>
<name>Aliyun Repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<!-- 推送到中央仓库 -->
<repository>
<id>sonatype-repos</id>
<name>Sonatype Repository</name>
<url>https://oss.sonatype.org/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>sonatype-repos-s</id>
<name>Sonatype Repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<!-- 快照 -->
<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>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun-repos</id>
<name>Aliyun Repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>