SpringCloud Eureka Provider及Consumer的实现

 更新时间:2019年10月16日 11:07:59   作者:巡山小妖N  
这篇文章主要介绍了SpringCloud Eureka 提供者及调用者的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Eureka-Provider 服务的提供者

新建一个服务提供者项目

1、导入pom文件

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
  </properties>

  <dependencies>
    <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>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

2、在启动类上加注解

@SpringBootApplication
@EnableDiscoveryClient // 这个注解加不加都可以,因为Eureka
public class EurekaProviderApplication {
  public static void main(String[] args) {
    SpringApplication.run(EurekaProviderApplication.class, args);
  }
}

上边那个@EnableDiscoverClient 注解加不加都行的原因会在后边表名

3、在Eureka-Provider项目中添加一个简单的接口

@RestController
public class EurekaProviderController {
  @GetMapping("/provider")
  public String provider(@RequestParam String aaa){
    return "eureka-provider-return" + aaa;
  }
}

4、以上配置完成之后启动Eureka-Provider

启动后会在控制台输出

DiscoveryClient_EUREKA-PROVIDER/192.168.1.4:eureka-provider:8000: registering service...

​同时看localhost:8761 页面的Instance currently registered 会多出一条信息

Application AMIs Availability Zones Status

EUREKA-PROVIDER n/a (1) (1) UP (1) - 192.168.1.4:eureka-provider:8000

Eureka-Consumer 服务的调用者

调用者的配置和上边提供者类似,applicatioin.yml配置修改server.port=8100

1、启动类修改

@SpringBootApplication  // 另一个发现服务的注解可以不用谢(SpringCloud版本要在Edgware之后)
public class EurekaConsumerApplication {
  @Bean
  @LoadBalanced
  RestTemplate restTemplate(){
    return new RestTemplate();
  }
  public static void main(String[] args) {
    SpringApplication.run(EurekaConsumerApplication.class, args);
  }
}

2、编写一个调用接口的类

@RestController
public class EurekaConsumerController {
  @Autowired
  private RestTemplate restTemplate;
  @GetMapping("/consumer")
  @GetMapping("/consumer")
  public String consumer(@RequestParam String aaa){
    return restTemplate.getForObject("http://EUREKA-PROVIDER/provider?aaa=" + aaa,String.class );
  }
}

3、启动服务调用者

​ 启动后,调用调用者的触发地址localhost:8100/consumer?aaa=consumerSemdParamter

​ 浏览器显示内容:

eureka-provider-returnconsumerSemdParamter

上边遗留的一个问题,eureka-client不加@EnableDiscoveryClient以将自己注册到注册中心

先看EurekaClientAutoConfiguration类中

@Configuration
@EnableConfigurationProperties
@ConditionalOnClass(EurekaClientConfig.class)
@Import(DiscoveryClientOptionalArgsConfiguration.class)
@ConditionalOnBean(EurekaDiscoveryClientConfiguration.Marker.class)
@ConditionalOnProperty(value = "eureka.client.enabled", matchIfMissing = true)
@ConditionalOnDiscoveryEnabled
@AutoConfigureBefore({ NoopDiscoveryClientAutoConfiguration.class,
   CommonsClientAutoConfiguration.class, ServiceRegistryAutoConfiguration.class })
@AutoConfigureAfter(name = {
   "org.springframework.cloud.autoconfigure.RefreshAutoConfiguration",
   "org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration",
   "org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration" })
public class EurekaClientAutoConfiguration {
}

可以看到该类加载的条件是需要有EurekaDiscoveryClientConfiguration.Maker.class的Bean存在,并且eureka.client.enabled为true,因为该值默认为true,所以不需要关注,因此重要的就是EurekaDiscoveryClientConfiguration.Maker.class这个,而这个类在Dalston之前的旧版本是不会自动加载的,而在Edgware之后,该类就配置到spring.factories文件中了,改文件中所配置的bean在springboot启动的时候就会被加载(所以不需要手动配上注册服务的注解了,springboot会自动配置)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • idea 配置checkstyle详细步骤

    idea 配置checkstyle详细步骤

    checkstyle是提高代码质量,检查代码规范的很好用的一款工具,本文简单介绍一下集成的步骤,并提供一份完整的checkstyle的代码规范格式文件,以及常见的格式问题的解决方法,需要的朋友可以参考下
    2023-11-11
  • Java 电话号码的组合示例详解

    Java 电话号码的组合示例详解

    这篇文章主要介绍了Java 电话号码的组合,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 详解JVM中的GC调优

    详解JVM中的GC调优

    我们经常会听到甚至需要自己动手去做GC调优。那么GC调优的目的到底是什么呢?让程序跑得更快?让GC消耗更少的资源?还是让程序更加稳定?带着这些疑问来读一下这篇文章,将会得到一个系统的甚至是不一样的结果。
    2021-06-06
  • 基于JTable的列宽与内容自适应的实现方法

    基于JTable的列宽与内容自适应的实现方法

    本篇文章是对JTable的列宽与内容自适应的实现方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • java开源区块链初始化创世区块jdchain服务搭建

    java开源区块链初始化创世区块jdchain服务搭建

    这篇文章主要介绍了java开源区块链初始化创世区块jdchain的服务搭建步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • Druid监控分布式实现过程解析

    Druid监控分布式实现过程解析

    这篇文章主要介绍了Druid监控分布式实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • java文件的重命名与移动操作实例代码

    java文件的重命名与移动操作实例代码

    这篇文章主要介绍了java文件的重命名与移动操作实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • Mybatis动态拼接sql提高插入速度实例

    Mybatis动态拼接sql提高插入速度实例

    这篇文章主要介绍了Mybatis动态拼接sql提高插入速度实例,当数据量少的时候,没问题,有效时间内可能完成插入,但是当数据量达到一定程度的时候,每次都一个sql插入超时,所以采用了拼接sql的方式加快速度,需要的朋友可以参考下
    2023-09-09
  • spring-data-redis 2.0 的使用示例代码

    spring-data-redis 2.0 的使用示例代码

    这篇文章主要介绍了spring-data-redis 2.0 的使用示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • springboot项目mapper无法自动装配未找到 UserMapper 类型的Bean解决办法

    springboot项目mapper无法自动装配未找到 UserMapper 类型的Bean解决办法

    这篇文章给大家介绍了springboot项目mapper无法自动装配,未找到 ‘userMapper‘ 类型的 Bean解决办法(含报错原因),文章通过图文结合的方式介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-02-02

最新评论