restTemplate负载均衡
温馨提示:
本文最后更新于 2025年09月07日,已超过 278 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
负载均衡

引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency> 依赖注入
@Autowired
LoadBalancerClient loadBalancerClient; 根据分组名,获取 任意的 一个 服务器 ,会自动进行 负载均衡
private Product getProductFromRemmoteWithLoadBalance(Long productId) {
ServiceInstance instance = loadBalancerClient.choose("service-product");
String url = "http://" + instance.getHost() + ":" + instance.getPort() + "/product/" + productId;
Product product = restTemplate.getForObject(url, Product.class);
log.info("远程请求: {} ", url);
return product;
} 
注解式 负载均衡
配置添加 注解 @LoadBalanced
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class OrderConfig {
@LoadBalanced //注解式 负载均衡
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
实现方法 只需要 路径中拼接 分组名,则自动 负载均衡
//注解式 负载均衡
private Product getProductFromRemmoteWithLoadBalanceAnnotion(Long productId) {
String url = "http://service-product/product/" + productId;
Product product = restTemplate.getForObject(url, Product.class);
log.info("远程请求: {} ", url);
return product;
} 注册中心宕机,远程调用 规则

配置中心
基本使用

@GetMapping("/config")
public String getConfig() {
return timeout + ":" + confirm;
} 引入依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
nacos的配置自动刷新
第一:在controller中 添加注解 @RefreshScope
使用 @ value获取 配置中的数据
@Value("${order.timeout}")
public String timeout;
@Value("${order.auto-confirm}")
public String confirm; 通过接口 访问 数据
@GetMapping("/config")
public String getConfig() {
return timeout + ":" + confirm;
} 注意 : 在多模块中,对于没有进行 nacos配置问价使用的模块使用 禁止导入检查


第二 @ConfigurationProperties
新建 配置绑定类
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "order")// 配置批量绑定在nacos下,可以无需@RefreshScope就能是吸纳自动刷新
public class OrderProperties {
public String timeout;
public String autoConfirm;
}
自动注入
@Autowired
OrderProperties orderProperties; 接口访问
@GetMapping("/config")
public String getConfig() {
return orderProperties.timeout + ":" + orderProperties.autoConfirm;
} 第三 NacosConfigManager 监听配置变化
即时获取 更新的配置数据,并可以 做自己的处理逻辑
import com.alibaba.cloud.nacos.NacosConfigManager;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@SpringBootApplication
public class OrderMainApplication {
public static void main(String[] args) {
SpringApplication.run(OrderMainApplication.class, args);
}
/*
1 项目启动就监听配置文件变化
2、发生变化后拿到变化值
3、发生邮件
*/
@Bean
ApplicationRunner applicationRunner(NacosConfigManager nacosConfigManager) {
return args -> {
ConfigService service = nacosConfigManager.getConfigService();
service.addListener("service-order.properties", "DEFAULT_GROUP", new Listener() {
@Override
public Executor getExecutor() {
return Executors.newFixedThreadPool(2);
}
@Override
public void receiveConfigInfo(String s) {
System.out.println("变化的配置信息" + s);
System.err.println("发送邮件的操作");
}
});
System.out.println("系统启动!!!");
};
}
} 配置的优先级

配置的按需加载

最优的书写方式 根据不同的配置文件,读取不同的配置。nacos的配置依据 激活的配置文件动态刷新
spring:
profiles:
active: test
config:
import:
- nacos:service-order.properties?group=DEFAULT_GROUP
- nacos:common.properties?group=dev
- nacos:database.properties?group=dev
application:
name: service-order
cloud:
nacos:
server-addr: 127.0.0.1:8848
config:
import-check:
enabled: false
namespace: ${spring.profiles.active:dev}
server:
port: 8000
---
spring:
config:
import:
- nacos:service-order.properties?group=DEFAULT_GROUP
- nacos:common.properties?group=dev
activate:
on-profile: dev
---
spring:
config:
import:
- nacos:service-order.properties?group=DEFAULT_GROUP
activate:
on-profile: test 
正文到此结束
- 本文标签: SpringCloud
- 本文链接: http://119.91.109.247:8443//article/132
- 版权声明: 本文由张亚东原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权