SpringCloud Eureka Provider及Consumer的实现
Eureka-Provider服务的提供者
新建一个服务提供者项目
1、导入pom文件
1.8 Greenwich.SR3 org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
2、在启动类上加注解
@SpringBootApplication @EnableDiscoveryClient//这个注解加不加都可以,因为Eureka publicclassEurekaProviderApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(EurekaProviderApplication.class,args); } }
上边那个@EnableDiscoverClient注解加不加都行的原因会在后边表名
3、在Eureka-Provider项目中添加一个简单的接口
@RestController publicclassEurekaProviderController{ @GetMapping("/provider") publicStringprovider(@RequestParamStringaaa){ return"eureka-provider-return"+aaa; } }
4、以上配置完成之后启动Eureka-Provider
启动后会在控制台输出
DiscoveryClient_EUREKA-PROVIDER/192.168.1.4:eureka-provider:8000:registeringservice...
同时看localhost:8761页面的Instancecurrentlyregistered会多出一条信息
ApplicationAMIsAvailabilityZonesStatus
EUREKA-PROVIDERn/a(1)(1)UP(1)-192.168.1.4:eureka-provider:8000
Eureka-Consumer服务的调用者
调用者的配置和上边提供者类似,applicatioin.yml配置修改server.port=8100
1、启动类修改
@SpringBootApplication//另一个发现服务的注解可以不用谢(SpringCloud版本要在Edgware之后) publicclassEurekaConsumerApplication{ @Bean @LoadBalanced RestTemplaterestTemplate(){ returnnewRestTemplate(); } publicstaticvoidmain(String[]args){ SpringApplication.run(EurekaConsumerApplication.class,args); } }
2、编写一个调用接口的类
@RestController publicclassEurekaConsumerController{ @Autowired privateRestTemplaterestTemplate; @GetMapping("/consumer") @GetMapping("/consumer") publicStringconsumer(@RequestParamStringaaa){ returnrestTemplate.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"}) publicclassEurekaClientAutoConfiguration{ }
可以看到该类加载的条件是需要有EurekaDiscoveryClientConfiguration.Maker.class的Bean存在,并且eureka.client.enabled为true,因为该值默认为true,所以不需要关注,因此重要的就是EurekaDiscoveryClientConfiguration.Maker.class这个,而这个类在Dalston之前的旧版本是不会自动加载的,而在Edgware之后,该类就配置到spring.factories文件中了,改文件中所配置的bean在springboot启动的时候就会被加载(所以不需要手动配上注册服务的注解了,springboot会自动配置)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。