java B2B2C Springcloud电子商城系统-搭建一个简单的Eureka程序

yayay · · 57 次点击 · · 开始浏览    
Eureka集群主要有三个部分Eureka服务器,服务提供者,服务调用者 简单的来说就是服务提供者将服务注册到Eureka服务器,服务调用者对其服务进行查找调用。 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 一.搭建服务器 1.引入maven依赖,使用官方文档中的依赖的结果还是启动不起来,缺少日志相关的依赖,另外自己添加了几个依赖后就OK了 ``` <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0</version> </dependency> <dependency> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> <version>1.7.10</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> <exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> ``` 因为Spring cloud集成了很多项目。所以引入spring-cloud-starter-eureka-server就相当于引入了spring-boot-starter-web等,就具有了web容器的功能了。 2.配置yml文件:设置服务器端口以及相关信息 ``` server: port: 8761 #更改端口为8761 eureka: client: register-with-eureka: false #服务器不用注册到其他服务器 fetch-registry: false #服务器不用去服务器抓取注册信息 ``` 3.编写服务启动类,也就是main方法启动spring boot,注意使用@EnableEurekaServer注解 ``` package com.nijunyang; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class ServerApp { public static void main(String[] args){ new SpringApplicationBuilder(ServerApp.class).web(true).run(args); } } ``` 启动之后访问http://localhost:8761/就可以看到Eureka服务器控制台。 二.服务提供者(警察局) 1.maven依赖将服务器的spring-cloud-starter-eureka-server依赖改为spring-cloud-starter-eureka即可 2.yml配置文件:需要将服务提供者注册到Eureka服务器上,服务器的端口设置的8761 ``` server: port: 8080 spring: application: name: first-police #服务提供者名字 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ #注册到服务器 ``` 3.编写一个实体类police和PoliceController,有人报警则派出一个警察 ``` package com.nijunyang; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class PoliceController { @RequestMapping(value = "/call/{id}",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public Police call(@PathVariable Integer id){ Police police = new Police(); police.setId(id); police.setName("zhangsan"); return police; } } ``` 4.该模块的启动类,main方法启动和服务器的一样 new SpringApplicationBuilder(XXX(启动类类名).class).web(true).run(args); 三.服务调用者(报警) 1.maveny依赖:在服务提供者的基础上再加入负载均衡(后续了解)相关的依赖 ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> ``` 2.yml配置:同样需要注册到服务器,上面的服务提供者由于没有设置端口所以默认是8080,现在将调用者端口设置8081,否则启动会出错 ``` server: port: 8081 #更改端口为8081 spring: application: name: first-person eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ #注册到服务器 ``` 3.编写PersonController,需要新加@Configuration注解,以及配置RestTemplate,RestTemplate本来是spring-web下面的类用来调用REST服务。本身不具备调用分布式服务的能力,但是被@LoadBalanced修饰后就具有访问分布式服务的能力了(具体涉及负载均衡,后续深入了解)。因为是注册到Eureka服务器的,所以我在内部请求的时候只需要转到相应的服务提供者就可以了:http://first-police/xxx ``` package com.nijunyang; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.client.RestTemplate; @Controller @Configuration public class PersonController { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } @GetMapping(value = "/call/{id}") @ResponseBody public String call(@PathVariable Integer id){ RestTemplate restTemplate = getRestTemplate(); return restTemplate.getForObject("http://first-police/call/" + id ,String.class); } } ``` 4.不多说,启动类编写 依次启动服务,服务提提供者和服务调用者。访问Eureka控制台就可以看到注册进去的first-police和first-person。访问http://localhost:8081/call/id,页面就会返回某个police的josn信息。 [java B2B2C Springcloud电子商城系统](https://2147775633.iteye.com/blog/2434341)
57 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet