【发布时间】:2020-04-30 04:04:08
【问题描述】:
这是我的依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
当我的 Spring Boot 应用程序注册到 Eureka 时,我可以像这样定义一个 RestTemplate bean:
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
在我的服务中,我可以使用他们注册的spring.application.name 向其他服务发出请求:
restTemplate.getForEntity("http://application1/test", String.class);
如何定义 http://application1/ 在禁用 Eureka 的情况下的位置?
eureka.client.enabled=false
当前实施测试:
@Configuration
public class RibbonConfig {
@Bean
public ServerList<Server> serverServerList() {
return new ConfigurationBasedServerList();
}
}
@Configuration
public class WebConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
@Component
public class TestService implements CommandLineRunner {
@Autowired
private RestTemplate restTemplate;
@Override
public void run(String... args) throws Exception {
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://application1/test", String.class);
System.out.println(responseEntity);
}
}
@RibbonClient(value = "application1", configuration = RibbonConfig.class)
@SpringBootApplication
public class Demo5Application {
public static void main(String[] args) {
SpringApplication.run(Demo5Application.class, args);
}
}
bootstrap.yml
eureka:
client:
enabled: false
application1:
ribbon:
list-of-servers: http://localhost:8081/
【问题讨论】:
-
为什么不用 feign 客户端而不是 RestTemplate
标签: spring spring-boot load-balancing netflix-eureka