工作中常用的Spring配置(随时补充)

Eureka服务注册

注意:在主启动类上需要加上@EnableEurekaServer 才能使用eureka

spring.application.name=serverName
server.port=8761
#设置与Eureka server交互的地址查询服务和注册服务都需要依赖这个地址
eureka.client.service-url.defaultZone=http://eureka2:8762/eureka
#eureka服务端的实例名称
eureka.instance.hostname=eureka1
#false表示不向注册中心注册自己。
eureka.client.register-with-eureka=true
#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
eureka.client.fetch-registry=true
#关闭自我保护机制
eureka.server.enable-self-preservation=false
#修改触发自我保护机制阈值(默认0.8)
eureka.server.renewal-percent-threshold=0.5
#使注册到eureka上是ip
eureka.instance.prefer-ip-address=true

Ribbon负载均衡

如果使用的是RestTemplate远程通信组件来进行远程通信,那么需要在其创建bean的上面加一个@LoadBalanBalanced注解,赋予它负载均衡的能力。

Feign远程通信

Feign需要先引入依赖,然后在主方法上添加@EnableFeignClients注解,最后创建一个接口类用于描述与远程服务通信的各种接口。


@FeignClient("serverName")
public interface FeignTestInterface{
	
	@GetMapping("/get/hello")
	public String getHello();
	
}
#打开请求过程中默认压缩
feign.compression.request.enabled=true
#进行压缩的临界值,低于此值不压缩
feign.compression.request.min-request=2048
#打开响应结果的默认压缩
feign.compression.response.enabled=true
#对所配置的静态资源进行压缩
feign.compression.request.mime-types=text/xml

Feign开启日志控制

//1、添加配置
现在application.properties文件添加如下配置(此配置需要在调用方配置)
logging.level.[com.lca.learn.consumer.FeignTestInterface]=debug

//2、创建一个与之相关的配置类,并将日志级别的bean声明注入到ICO容器中
public class FeignLogConfig{
	@Bean
	feign.Logger.Level feignLogger(){
	/*
	1、BASIC:只记录请求方法、url以及相应状态码和执行时间
	2、FULL:所有信息都记录
	3、HEADERS:除了BASIC以外的请求头和响应头信息
	4、NONE:不记录任何日志
	*/
	return feign.Logger.Level.FULL;
	}
}
//3、在自定义的feign接口注解中添加configuration属性指定新建的配置类
@FeignClient(name="serverName",configuration=FeignLogConfig.class)
public interface FeignTestInterface{}

改变Feign底层通信方法

//改变Feign底层通信方法(改变为OKHTTP)
//1、导入OKhttp依赖
<dependency>
	<groupId>io.github.openfeign</groupId>
	<artifactId>feign.okhttp</artifactId>
</dependency>
//2、添加配置
#关闭默认http通信方式
feign.httpclient.enabled=false
#启动okhttp通信方式
feign.okhtttp.enabled=true

OpenFeign使用Hystrix实现降级

//1、直接在注解里面设置fallback属性来制定一个降级类
@FeignClient(
		name="serverName",
		configuration=FeignLogConfig.class,
		fallback = TestDefaultFallback.class)
//这个降级类需要实现当前接口类,并实现方法

//2、在application.properties文件中配置开启熔断
feign.hystrix.enabled=true

Spring Cloud Config配置中心

配置中心服务需要在主方法中添加@EnabledConfigServer注解

#指定配置中心对应仓库地址
spring.cloud.config.server.git.url=https://gitee.com/....
#指定对应用户名密码
spring.cloud.config.server.git.username=123456
spring.cloud.config.server.git.password=123456

想要使用配置中心的服务需要做如下配置:

//引入依赖
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-client<artifactId>
</dependency>

//需要在bootstrap.properties文件中添加配置
//bootstrap文件的加载优先级是高于application文件的
#启动配置的发现
spring.cloud.config.discovery.enabled=true
#eureka server上注册的的config server的服务名
spring.cloud.config.discovery.service-id=SPRING-CLOUD-CONFIG-SERVER
#指定配置文件类型
spring.cloud.config.profile=prd
#还需要指定eureka地址才能定位到config server
eureka.client.service-url.defaultZone=http://localhost:8762/eureka

当git上配置改变时,手动或自动通知服务方法:
1、手动通知服务更新配置

//1.引入依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator<artifactId>
</dependency>
//2.添加配置
#刷新refresh端点
management.endpoints.web.exposure.include=refresh
//3.在需要刷新的类头上加上注解例如下面
@RefreshScope
@Service
public class TestService{
	@Value("${configInfo}")
	private String configInfo;
}
//4.手动执行该服务的内置post方法
例如:http://localhost:8088/actuator/refresh
//4.1可以在git上设置钩子来自动触发更新操作如下图

在这里插入图片描述
2、自动更新服务配置

//1、config server和需要的服务 中新增依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator<artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-bus-kafka<artifactId>
</dependency>
//2、config server配置如下
spring.application.name=spring-cloud-config-server
server.port=8081
eureka.client.service-url.defaultZone=http://eureka2:8762/eureka

#指定配置中心对应仓库地址
spring.cloud.config.server.git.url=https://gitee.com/....
#指定对应用户名密码
spring.cloud.config.server.git.username=123456
spring.cloud.config.server.git.password=123456

#开启bus的支持
management.endpoints.web.exposure.include=bus-refresh
spring.cloud.bus.enabled=true
spring.cloud.bus.trace.enabled=true
spring.cloud.bus.refresh.enabled=true

#得到kafka支持
spring.kafka.bootstrap-servers=192.168.202.106:9092
spring.kafka.consumer.group-id=config-server
//在其他服务中心也需要加上上面kafka的信息以及依赖
//3、手动或自动调用post方式的api:http://localhost:8081/actuator/bus-refresh

Mybatis

mybatis-plus.mapper-locations = classpath:com/lca/**/*.xml
mybatis-plus.type-aliases-package = com.lca.**.domain
mybatis-plus.type-handlers-package = com.lca.persistence.typehandler,com.lca.**.typehandler
mybatis-plus.type-enums-package = com.lca.**.enums
mybatis-plus.configuration.jdbc-type-for-null = null

Spring Cloud Gateway

/**引入依赖*/
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client<artifactId>
</dependency>
spring:
	application:
		name: spring-cloud-gateway
	cloud:
		gateway:
			routes:
				## 断言:根据下面配置判断是否需要拦截,拦截的结果发送到uri映射的路径
				- id: one_route
				  uri: http://localhost:8088/
				  predicates:
					- Path=/gateway/**
					## 请求参数name=lca的参数才会被拦截
					- Query=name,lca
					- Method=GET
				  filters: 
				  	## 表示将前缀去掉一个,否则拼接时会带着gateway
				  	- StripPrefix=1
			  	- id: two_route
			  	  uri: http://localhost:8088/
				  filters: 
				  	## 对于拦截到的请求header中加入参数key=name,value=xiaobai
				  	- AddRequestParameter=name,xiaobai
				- id: three_route
					## 不通过地址,而是通过服务名称进行负载均衡调用
				  uri: lb://spring-cloud-server-name
				  predicates:
				  	- Path=/gateway/**
				  ##用来测试redis中key鉴权
				  filters:
				   - name: RequestRateLimiter
				     args:
				     	# 自定义key
				     	keyResolver: '#{@ipAddressKeyResolver}'
				     	redis-rate-limiter.replenishRate: 1
				      	redis-rate-limiter.burstCapacity: 2
			discovery:
				locator:
					lower-case-service-id: true
					enabled: true

	redis:
		host: redis的路径
				  

Hystrix熔断机制

使用Hystrix实现降级

/**引入依赖*/
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-hystrix<artifactId>
</dependency>

方法一、在Controller方法上加@HystrixCommand注解,并设置降级方法
例如controller方法如下:
//@HystrixCommand注解只作用于方法之上
@HystrixCommand(fallbackMethod = "fallback")
@GetMapping("/hystrix/demo")
public String hystrixDemo(){
	return restTemplate.getForObject("http://localhost:8088/test",String.class);
}

/**
* 注意方法名要与上面注解中设置的降级方法一致,并且返回值要与上面的返回值一致。 
*/
public String fallback(){
	return "系统繁忙,请稍后重试...";
}

方法二、在Controller类上设置@DefaultProperties(defaultFallback = "fallback")

设置请求超时时间

@HystrixCommand(commandProperties = {
	@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值