SpringCloud Cloud查找调用REST服务使用RestTemplate(ribbon负载) 或feign模式火推13

SpringCloud

搭建SpringCloud服务中心

  1. 在pom.xml引入spring-cloud开发包

      <!-- springboot-parent -->
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.7.RELEASE</version>
        <relativePath/>
      </parent>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
      </properties>
    
      <dependencies>
        <!-- springcloud-eureka-server -->
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka-server</artifactId>
          <version>1.3.4.RELEASE</version>
        </dependency>
    
      </dependencies>
    
      <!-- springcloud-parent -->
      <dependencyManagement>
        <dependencies>
            <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-parent</artifactId>
              <version>Brixton.SR5</version>
              <type>pom</type>
            </dependency>
        </dependencies>
      </dependencyManagement>
    
  2. 在application.properties配置eureka

    #server
    server.port=2222
    
    #eureka
    #spring.application.name=eureka_server
    eureka.client.registerWithEureka=false
    eureka.client.fetchRegistry=false
    eureka.client.serviceUrl.defaultZone=http://localhost:2222/eureka
    
  3. 在主启用类追加@EnabledEurekaServer标记

    @EnableEurekaServer//启用eureka服务器
    @SpringBootApplication
    public class EurekaServerBootApplication {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            SpringApplication.run(EurekaServerBootApplication.class, args);
        }
    
    }
    

将REST服务注册到Cloud

  1. 在pom.xml中追加spring-cloud-eureka定义

      <!-- springcloud-parent -->
      <dependencyManagement>
        <dependencies>
            <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-parent</artifactId>
              <version>Brixton.SR5</version>
              <type>pom</type>
            </dependency>
        </dependencies>
      </dependencyManagement>
    
         <!-- springcloud-eureka -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka</artifactId>
      <version>1.3.4.RELEASE</version>
    </dependency>
    
  2. 在application.properties添加eureka注册参数

    #eureka
    spring.application.name=ovls_user_server
    eureka.client.serviceUrl.defaultZone=http://localhost:2222/eureka
    
  3. 在主启动类追加@EabledDiscoveryClient

    @EnableDiscoveryClient//启用eureka服务查找和注册
    @SpringBootApplication
    @ServletComponentScan
    @MapperScan(basePackages={"cn.xdl.ovls.user.dao"})
    public class UserServiceBootApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(UserServiceBootApplication.class, args);
        }
    
    }
    

从Cloud查找调用REST服务

使用RestTemplate(ribbon负载)

  1. 在pom.xml中定义ribbon开发包

    <!-- springcloud-ribbon -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-ribbon</artifactId>
      <version>1.3.4.RELEASE</version>
    </dependency>
    
  2. 定义一个RestTemplate配置,启用ribbon负载

    @Configuration
    public class RestTemplateConfig {
    
        @Bean
        @LoadBalanced//启用ribbon负载均衡调用服务
        public RestTemplate cteateRestTemplate(){
            return new RestTemplate();
        }
    
    }
    
  3. 注入RestTemplate,调用eureka服务

    @Autowired
    private RestTemplate restTemplate;
    
    ResponseResult userResult  = restTemplate.getForObject(
        "http://USERSERVER/user/token?token="+token, ResponseResult.class);
    

    提示:调用的URL地址,格式为http://服务名/uri

feign模式

  1. 在pom.xml中定义ribbon、feign开发包

    <!-- springcloud-ribbon -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-ribbon</artifactId>
      <version>1.3.4.RELEASE</version>
    </dependency>
    
    <!-- springcloud-feign -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-feign</artifactId>
      <version>1.3.4.RELEASE</version>
    </dependency>
    
  2. 定义一个Fegin远程调用接口

    @FeignClient(name="USERSERVER")//对应哪个服务实例
    public interface UserServiceRemote {
    
        //调用/user/token服务
        @RequestMapping(value="/user/token",method=RequestMethod.GET)
        public ResponseResult checkToken(String token);
    
    }
    

    提示:@FeignClient(name="注册中心服务实例名"),@RequestMapping请求定义跟UserController入口定义相同

  3. 注入Feign远程接口对象,使用服务

    @Autowired
    private UserServiceRemote userRemote;
    
    //利用Remote对象调用服务
    ResponseResult userResult = userRemote.checkToken(token);
    
  4. 在主入口启动类前追加@EnableFeignClients标记

    @EnableFeignClients//启用Feign接口调用
    @EnableDiscoveryClient
    @SpringBootApplication
    @ServletComponentScan
    @MapperScan(basePackages={"cn.xdl.ovls.paper.dao"})
    public class PaperServiceBootApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(PaperServiceBootApplication.class, args);
        }
    
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值