SpringCloud注解和配置以及pom依赖说明

本文详细介绍了SpringCloud与SpringBoot的版本匹配关系,列举了核心依赖项及其功能,包括注解支持和application.properties配置选项,适用于构建微服务架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在本文中说明了pom依赖可以支持什么功能,以及支持什么注解,引入该依赖可以在application.properties中添加什么配置。


Spring Cloud与Spring Boot版本匹配关系:(选择版本时要注意匹配关系)

Spring Cloud

Spring Boot

Finchley

兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x

Dalston和Edgware

兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x

Camden

兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x

Brixton

兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x

Angel

兼容Spring Boot 1.2.x


1、SpringCloud 的pom依赖

序号pom依赖说明支持注解支持配置application.properties
1

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.16.RELEASE</version>
<relativePath/> 
</parent>

spring-boot-starter-parent是Spring Boot的核心启动器,
包含了自动配置、日志和YAML等大量默认的配置。
引入之后相关的starter引入就不需要添加version配置,
spring boot会自动选择最合适的版本进行添加。

@SpringBootApplication
@Configuration
@RequestBody
@RestController
@ComponentScan(basePackages={"com.xx","com.yy"})

server.port=1111
2

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

使用dependencyManagement进行版本管理
注意:这里的高版本Edgware.SR4不兼容spring-boot-starter-parent的高版本2.x,只能是1.x的高版本,比如1.5.16.RELEASE

  
3

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

支持HTTP调用方式,包含了Spring Boot预定义的一些Web开发的常用依赖包
如: spring-webmvc,Tomcat....

  
4

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>

  @SpringCloudApplicationspring.application.name=eureka-service
5

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

eureka注册中心依赖 @EnableEurekaServer

eureka.instance.hostname=localhost
eureka.client.service-url.defaultZone=http://localhost:1111/eureka
eureka.client.fetch-registry=false
eureka.client.fetch-registry=false

6

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

引入eureka 客户端依赖

@EnableDiscoveryClient
@EnableZuulProxy

 
7

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

引入ribbon 依赖 ,用来实现客户端的负载均衡,用在client客户端项目 

ribbon.ConnectTimeout=500
ribbon.ReadTimeout=5000
hello-service.ribbon.ConnectTimeout=500

8

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

引入hystrix 依赖 ,用来实现服务容错保护。当发现请求的服务端崩溃,就采用容错机制 @EnableCircuitBreakerhystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000
9

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

引入feign 依赖,包含ribbon负载均衡,也包含Hystrix服务容错。

Spring Cloud Feign在构建被@FeignClient注解修饰的服务客户端是,会为每一个客户端都创建一个feign.Logger实例,我们可以利用该日志对象进行Log分析。

 @EnableFeignClients

feign.compression.request.enabled=true;
feigan.compression.response.enabled=true;

10

<dependency> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-starter-actuator</artifactId> 
</dependency>

监控模块,实时和定时监控服务的各项状态和可用性  
11

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

引入zuul依赖 , 它依赖了spring-boot-starter-actuator/spring-boot-starter-hystrix/spring-boot-starter-ribbon @EnableZuulProxy

zuul.routes.api-a.path=/api-a/**
zuul.routes.api-a.url=http://localhost:9001

zuul.routes.api-a.path=/api-a/**
zuul.routes.api-a.serviceId=hello-service

12

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

 

为分布式系统中的基础设施和微服务提供集中化的外部配置支持,分为服务端和客户端两个部分。
比如要访问my_test分支下的spring-cloud-config-file目录下的sam-dev.properties配置文件,访问url:
http://localhost:7001/sam/dev/my_test

 @EnableConfigServer 

#配置Git仓库的地址
spring.cloud.config.server.git.uri=https://gitlab.com/xxx/xxx.git
#配置仓库路径下的相对搜索位置,可以配置多个
spring.cloud.config.server.git.search-paths=spring-cloud-config-file
#这里配置你的Git仓库的用户名
spring.cloud.config.server.git.username=xxx
#这里配置你的Git仓库的密码
spring.cloud.config.server.git.password=123

13

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

 分布式服务中管理配置文件的客户端,服务端是spring-cloud-config-server @RefreshScope

bootstrap.properties:
#{profile}
spring.cloud.config.profile=dev
#{label} git分支名字
spring.cloud.config.label=master
#config server uri
spring.cloud.config.uri=http://localhost:7001

14 

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

 在所有需要链路跟踪的项目中都加上这个依赖。  @EnableZipkinServer 

除了sleuth本身是链路中心的除外,其余参与链路追踪的分布式系统都需要添加如下配置:
#指定zipkin服务端的url
spring.zipkin.base-url=http://localhost:9411
#设定样本收集的比率为100%
spring.sleuth.sampler.percentage=1.0

15

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>1.3.0.RELEASE</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>

修改源文件后系统自动重启  
16

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

 

告诉Maven包含Spring特定的Maven插件,用于构建和部署SpringBoot应用程序。
注意,这个要放在build->plugins节点下。

  
 
17

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.10</version>
<configuration>
<baseImage>java</baseImage>
<imageName>example</imageName>
</configuration>
</plugin>

 

部署以及持续集成。
注意,这个要放在build->plugins节点下。

  
18

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

使用Java Persistence API ( JPA )

@Entity // 这是一个JPA类
@Table(name="t_user") //映射到哪张表
@Id //主键
@Column(name="user_id",nullable=false) //对应表里哪个字段,不允许为空
@Repository //这是一个DAO类

 
19

<dependency>
  <groupId>postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>9.1-901.jdbc4</version>
</dependency>

Postgres JDBC驱动程序  
 20

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-rsa</artifactId>
</dependency>

 加密解密相关包 

 

spring.datasource.password: "{cipher}d495ce8603af9676450736e119"
spring.cloud.config.server.encrypt.enabled=false

2、SpringCloud相关注解

序号注解说明
1 @SpringBootApplicationSpringBoot启动类注解,启动类需有main方法
2 @EnableEurekaServer用来指定该项目为Eureka的服务注册中心
3 @EnableCircuitBreaker开启断路器,实现服务容错保护
4 @EnableDiscoveryClient让服务使用eureka服务器 实现服务注册和发现
5 @SpringCloudApplication

相当于3个注解:

@EnableDiscoveryClient
@SpringBootApplication
@EnableCircuitBreaker

6 @Configuration相当于定义spring配置文件的xmlns域,以及支持@Bean在本类中的注册。
7 @EnableFeignClients(加到启动类上)Spring Cloud Feign 通过@EnableFeignClients来开启spring cloud feign的支持功能 不仅包含Spring Cloud ribbon负责均衡功能,也包含Spring Cloud Hystrix服务容错功能,还提供了一种声明式的Web服务客户端定义方式。
8 @RequestBody使接收到的字段值自动映射到注解声明的复合对象中
9 @RestController @RestController = @Controller + @ResponseBody
10 @ComponentScan(basePackages={"com.xx","com.yy"})指定扫描包
11 @EnableZuulProxy

开启网关路由服务功能。
注意:一旦要请求的controller类实现了某个接口,恰好这个接口有自定义的@RequestMapping("/xxx")值,那么在发起请求时,完整的url不能省略这个@RequestMapping值:http://localhost:5555/hello-service/xxx/myHello

12 @Bean向spring容器注册自定义类
13 @EnableConfigServer开启Spring Cloud Config 的服务端功能为分布式系统中的基础设施和微服务提供集中化的外部配置支持,分为服务端和客户端两个部分。
14 @EnableZipkinServer用于开启Zipkin Server功能:分布式框架中的如果发生异常可链路追踪.
15 

@RequestMapping(value="/url",method=RequestMethod.POST)
public void getUrl(@PathVariable("name") String name){ … }

如何动态配置url路径,以及从路径中取值
16 @RefreshScope对需要刷新的属性使用@Value注解,同时将类使用@RefreshScope注解进行标记

 

3、SpringCloud的application.properties相关设置

序号application.properties配置说明
1server.port=1111设置web项目服务端口号
2spring.application.name=eureka-service设置服务名称
3eureka.instance.hostname=localhost设置服务主机IP
4eureka.client.register-with-eureka=falsefalse: 注册中心不需要注册自己。true(默认): 需要注册自己
5eureka.client.fetch-registry=falsefalse: 注册中心不需要去发现服务。true(默认): 需要发现服务
6eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka设置服务注册中心的URL,这里的${}是占位符。最终显示例如:http://localhost:1111/eureka
7ribbon.ConnectTimeout=500全局配置负载均衡超时设置 ribbon.<key>=<value>
8ribbon.ReadTimeout=5000全局配置负载均衡读超时设置
9hello-service.ribbon.ConnectTimeout=500为某服务指定的负载均衡超时设置 @FeignClient(value="hello-service")
10hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000hystrix.command.default.xxx进行全局配置
11hystrix.command.hello.execution.isolation.thread.timeoutInMilliseconds=5000hystrix.command.<commandKey>.xxx进行指定配置,这里的<commandKey>可以为方法名
12

feign.compression.request.enabled=true;
feigan.compression.response.enabled=true;

请求压缩配置,支持对请求和响应进行GZIP压缩,以减少通信过程中的性能损耗。
13

zuul.routes.api-a.path=/api-a/**
zuul.routes.api-a.url=http://localhost:9001

zuul.routes.api-a.path=/api-a/**
zuul.routes.api-a.serviceId=hello-service

zuul.routes.hello-service.path=/hello-service/**
zuul.routes.hello-service.serviceId=hello-service

请求示例:http://localhost:5555/api-a/feign-consumer
请到http://localhost:9001这个url地址找**(/feign-consumer)匹配的http接口,因为我把这个url的服务命名为api-a了。
推荐使用serviceId来代替url地址。
注意:zuul.routes.api-a.url=hello-service也能实现功能,但是它不能进行正常的负载均衡和容错保护。
不配置默认路由规则。当zuul.ignored-services=*的时候,所有的服务都不会自动创建路由规则,这个时候需要通过前面的配置进行相关路由配置了。

14

#配置Git仓库的地址
spring.cloud.config.server.git.uri=https://gitlab.com/xxx/xxx.git
#配置仓库路径下的相对搜索位置,可以配置多个
spring.cloud.config.server.git.search-paths=spring-cloud-config-file
#这里配置你的Git仓库的用户名
spring.cloud.config.server.git.username=xxx
#这里配置你的Git仓库的密码
spring.cloud.config.server.git.password=123

 SpringCloud自己创建的管理配置中心的服务端配置
15

spring.profiles.active=default

指定服务运行什么配置,比如application-dev.properties,就设置值为dev
16

spring.cloud.config.server.encrypt.enabled=false

显式关闭输出属性的解密。
17

spring.datasource.password: "{cipher}d495ce8603af9676450736e119"

SpringCloud配置服务器要求所有已加密的属性前面加上{cipher}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值