天天看點

Springcloud基于Eureka的服務消費者者搭建

  1. 依賴springcloud版本
<dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
           
  1. 依賴eureka
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
    </dependencies>
           
  1. 啟動類
@SpringBootApplication
@EnableEurekaClient
public class ConsumerMain {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerMain.class, args);
    }
}

           
  1. yml配置
server:
  port: 8081

spring:
  application:
    name: consumer

eureka:
  client:
    register-with-eureka: false #調用方可以不注冊到服務中心
    service-url:
      defaultZone: http://localhost:7001/eureka/ #eureka的伺服器位址,多個以逗号分隔


           
  1. RestTemplate的注入
@Configuration //相當于在原先的spring applicationContext.xml配置
public class ConfigBean {

    @Bean
    @LoadBalanced  //負載均衡 預設輪訓
    public RestTemplate getRestTemplate(){
        //restful操作的RestTemplate對象
        return new RestTemplate();
    }
}
           
  1. 調用方式
@RestController
public class ControllerConsumer {

    @Autowired
    private RestTemplate restTemplate;

    //通過服務名通路 服務名字對應服務提供者的spring.application.name
    private static final String RESTFUL_URL = "http://PROVIDERTEST";

    @RequestMapping("/test")
    public String test() {
        return restTemplate.getForObject(RESTFUL_URL+"/test", String.class);
    }
}
           

繼續閱讀