Spring Cloud 入门 -- 搭建Eureka注册中心 实现服务者与消耗者的服务调用_e ...

打印 上一主题 下一主题

主题 844|帖子 844|积分 2542

  1. <groupId>org.example</groupId>
  2. <artifactId>spring_cloud</artifactId>
  3. <version>1.0-SNAPSHOT</version>
  4. <modules>
  5.     <module>springcloud-api</module>
  6.     <module>springcloud-provider</module>
  7.     <module>springcloud-eureka</module>
  8.     <module>springcloud-consumer</module>
  9. </modules>
  10. <!-- 打包方式为 pom -->
  11. <packaging>pom</packaging>
  12. <properties>
  13.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  14.     <maven.compiler.source>1.8</maven.compiler.source>
  15.     <maven.compiler.target>1.8</maven.compiler.target>
  16.     <junit.version>4.12</junit.version>
  17.     <log4j.version>1.2.17</log4j.version>
  18.     <lombok.version>1.16.18</lombok.version>
  19. </properties>
  20. <dependencyManagement>
  21.     <dependencies>
  22.         <dependency>
  23.             <groupId>org.springframework.cloud</groupId>
  24.             <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  25.             <version>0.2.0.RELEASE</version>
  26.             <type>pom</type>
  27.             <scope>import</scope>
  28.         </dependency>
  29.         <!--springCloud的依赖-->
  30.         <dependency>
  31.             <groupId>org.springframework.cloud</groupId>
  32.             <artifactId>spring-cloud-dependencies</artifactId>
  33.             <version>Greenwich.SR1</version>
  34.             <type>pom</type>
  35.             <scope>import</scope>
  36.         </dependency>
  37.         <!--SpringBoot-->
  38.         <dependency>
  39.             <groupId>org.springframework.boot</groupId>
  40.             <artifactId>spring-boot-dependencies</artifactId>
  41.             <version>2.1.4.RELEASE</version>
  42.             <type>pom</type>
  43.             <scope>import</scope>
  44.         </dependency>
  45.         <!--数据库-->
  46.         <dependency>
  47.             <groupId>mysql</groupId>
  48.             <artifactId>mysql-connector-java</artifactId>
  49.             <version>5.1.47</version>
  50.         </dependency>
  51.         <dependency>
  52.             <groupId>com.alibaba</groupId>
  53.             <artifactId>druid</artifactId>
  54.             <version>1.1.10</version>
  55.         </dependency>
  56.         <!--SpringBoot 启动器-->
  57.         <dependency>
  58.             <groupId>org.mybatis.spring.boot</groupId>
  59.             <artifactId>mybatis-spring-boot-starter</artifactId>
  60.             <version>1.3.2</version>
  61.         </dependency>
  62.         <!--日志测试~-->
  63.         <dependency>
  64.             <groupId>ch.qos.logback</groupId>
  65.             <artifactId>logback-core</artifactId>
  66.             <version>1.2.3</version>
  67.         </dependency>
  68.         <dependency>
  69.             <groupId>junit</groupId>
  70.             <artifactId>junit</artifactId>
  71.             <version>${junit.version}</version>
  72.         </dependency>
  73.         <dependency>
  74.             <groupId>log4j</groupId>
  75.             <artifactId>log4j</artifactId>
  76.             <version>${log4j.version}</version>
  77.         </dependency>
  78.         <dependency>
  79.             <groupId>org.projectlombok</groupId>
  80.             <artifactId>lombok</artifactId>
  81.             <version>${lombok.version}</version>
  82.         </dependency>
  83.     </dependencies>
  84. </dependencyManagement>
复制代码
  1. #### ⌚实体类模块
  2. **pom.xml**
复制代码
<?xml version="1.0" encoding="UTF-8"?>

spring_cloud
org.example
1.0-SNAPSHOT

4.0.0
  1. <artifactId>springcloud-api</artifactId>
  2. <properties>
  3.     <maven.compiler.source>8</maven.compiler.source>
  4.     <maven.compiler.target>8</maven.compiler.target>
  5. </properties>
  6. <dependencies>
  7.     <dependency>
  8.         <groupId>org.projectlombok</groupId>
  9.         <artifactId>lombok</artifactId>
  10.     </dependency>
  11. </dependencies>
复制代码
  1. **Dept实体类**
复制代码
package com.wanshi.springcloud.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
//支持链式编程
@Accessors(chain = true)
public class Dept {
  1. private Integer dept_noid;
  2. private String dept_name;
  3. private String db_source;
复制代码
}
  1. #### ⌚注册中心模块
  2. **pom.xml**
复制代码
<?xml version="1.0" encoding="UTF-8"?>

spring_cloud
org.example
1.0-SNAPSHOT

4.0.0
  1. <artifactId>springcloud-eureka</artifactId>
  2. <dependencies>
  3.     <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
  4.     <dependency>
  5.         <groupId>org.springframework.cloud</groupId>
  6.         <artifactId>spring-cloud-starter-eureka-server</artifactId>
  7.         <version>1.4.6.RELEASE</version>
  8.     </dependency>
  9.     <!-- 热部署工具 -->
  10.     <dependency>
  11.         <groupId>org.springframework.boot</groupId>
  12.         <artifactId>spring-boot-devtools</artifactId>
  13.     </dependency>
  14. </dependencies>
复制代码
  1. **application.yml**
复制代码
server:
port: 7001
eureka 配置

eureka:
instance:
hostname: localhost # eureka 服务端的实例名称
client:
register-with-eureka: false # 是否向 eureka 注册自己,不注册自己
fetch-registry: false # fetch-registry 如果为false,表现自己为注册中心
service-url: # 将默认的url去掉,更换为自己的,监控页面
defaultZone: http://                                             e                            u                            r                            e                            k                            a                            .                            i                            n                            s                            t                            a                            n                            c                            e                            .                            h                            o                            s                            t                            n                            a                            m                            e                                  :                              {eureka.instance.hostname}:                  eureka.instance.hostname:{server.port}/eureka/
  1. **启动类**
复制代码
package com.wanshi.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
// EnableEurekaServer 启动Eureka服务
@EnableEurekaServer
public class EurekaServerMainApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerMainApplication.class, args);
}
}
  1. #### ⌚服务提供者模块
  2. **pom.xml**
复制代码
  1.     <!-- Eureka -->
  2.     <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
  3.     <dependency>
  4.         <groupId>org.springframework.cloud</groupId>
  5.         <artifactId>spring-cloud-starter-eureka</artifactId>
  6.         <version>1.4.6.RELEASE</version>
  7.     </dependency>
  8.     <!-- actuator 监控中心 -->
  9.     <dependency>
  10.         <groupId>org.springframework.boot</groupId>
  11.         <artifactId>spring-boot-starter-actuator</artifactId>
  12.     </dependency>
  13.     <!-- 引入实体类 -->
  14.     <dependency>
  15.         <groupId>org.example</groupId>
  16.         <artifactId>springcloud-api</artifactId>
  17.         <version>1.0-SNAPSHOT</version>
  18.     </dependency>
  19.     <!-- junit -->
  20.     <dependency>
  21.         <groupId>junit</groupId>
  22.         <artifactId>junit</artifactId>
  23.         <scope>test</scope>
  24.     </dependency>
  25.     <!-- mysql -->
  26.     <dependency>
  27.         <groupId>mysql</groupId>
  28.         <artifactId>mysql-connector-java</artifactId>
  29.     </dependency>
  30.     <dependency>
  31.         <groupId>com.alibaba</groupId>
  32.         <artifactId>druid</artifactId>
  33.     </dependency>
  34.     <dependency>
  35.         <groupId>ch.qos.logback</groupId>
  36.         <artifactId>logback-core</artifactId>
  37.     </dependency>
  38.     <dependency>
  39.         <groupId>org.mybatis.spring.boot</groupId>
  40.         <artifactId>mybatis-spring-boot-starter</artifactId>
  41.     </dependency>
  42.     <!-- test -->
  43.     <dependency>
  44.         <groupId>org.springframework.boot</groupId>
  45.         <artifactId>spring-boot-test</artifactId>
  46.     </dependency>
  47.     <dependency>
  48.         <groupId>org.springframework.boot</groupId>
  49.         <artifactId>spring-boot-starter-web</artifactId>
  50.     </dependency>
  51.     <!-- jetty -->
  52.     <dependency>
  53.         <groupId>org.springframework.boot</groupId>
  54.         <artifactId>spring-boot-starter-jetty</artifactId>
  55.     </dependency>
  56.     <!-- 热部署工具 -->
  57.     <dependency>
  58.         <groupId>org.springframework.boot</groupId>
  59.         <artifactId>spring-boot-devtools</artifactId>
  60.     </dependency>
  61.     <dependency>
  62.         <groupId>org.springframework.boot</groupId>
  63.         <artifactId>spring-boot-starter-jdbc</artifactId>
  64.     </dependency>
  65. </dependencies>
复制代码
  1. **application.yml**
复制代码
server:
port: 8001
servlet:
context-path: /springcloud-provider-dept/
spring:
application:
name: SpringCloudProviderDept
datasource:
url: jdbc:mysql://localhost:3306/db_spring_cloud01
username: root
password: 111111
driver-class-name: com.mysql.jdbc.Driver
Eureka的配置,服务注册到那边

eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/
instance:
instance-id: springcloud-provider-dept8001 # 修改 Eureka上的默认形貌信息
info:
app.name: wanshi-springcloud
company.name: blog.wanshi.com
  1. **DeptController**
复制代码
package com.wanshi.springcloud.controller;
import com.wanshi.springcloud.entity.Dept;
import com.wanshi.springcloud.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(“/dept/”)
public class DeptController {
  1. @Autowired
  2. private DeptService deptService;
  3. @GetMapping("list")
  4. public List<Dept> list() {
  5.     return deptService.list();
  6. }
  7. @PostMapping("insert")
  8. public Integer insert(@RequestBody Dept param) {
  9.     return deptService.insert(param);
  10. }
  11. @PostMapping("get/{id}")
  12. public Dept get(@PathVariable("id") Integer id) {
  13.     Dept param = new Dept();
  14.     param.setDept\_noid(id);
  15.    return deptService.get(param);
  16. }
复制代码
}
  1. #### ⌚服务消费者模块
  2. **pom.xml**
复制代码
  1.     <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon -->
  2.     <dependency>
  3.         <groupId>org.springframework.cloud</groupId>
  4.         <artifactId>spring-cloud-starter-ribbon</artifactId>
  5.         <version>1.4.6.RELEASE</version>
  6.     </dependency>
  7.     <!-- Eureka -->
  8.     <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
  9.     <dependency>
  10.         <groupId>org.springframework.cloud</groupId>
  11.         <artifactId>spring-cloud-starter-eureka</artifactId>
  12.         <version>1.4.6.RELEASE</version>
  13.     </dependency>
  14.     <dependency>
  15.         <groupId>org.example</groupId>
  16.         <artifactId>springcloud-api</artifactId>
  17.         <version>1.0-SNAPSHOT</version>
  18.     </dependency>
  19.     <dependency>
  20.         <groupId>org.springframework.boot</groupId>
  21.         <artifactId>spring-boot-starter-web</artifactId>
  22.     </dependency>
  23.     <!-- 热部署工具 -->
  24.     <dependency>
  25.         <groupId>org.springframework.boot</groupId>
  26.         <artifactId>spring-boot-devtools</artifactId>
  27.     </dependency>
  28. </dependencies>
复制代码
  1. **application.yml**
复制代码
server:
port: 80
Eureka配置

eureka:
client:
register-with-eureka: false # 不向注册中心注册自己
service-url:
defaultZone: http://localhost:7001/eureka/
  1. **ConfigBean配置**
复制代码
package com.wanshi.springcloud.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ConfigBean {
  1. @Bean
  2. public RestTemplate getRestTemplate() {
  3.     return new RestTemplate();
  4. }
复制代码
}
  1. **DeptConsumerController**
复制代码
package com.wanshi.springcloud.controller;
import com.wanshi.springcloud.entity.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping(“/consumer/dept/”)
public class DeptConsumerController {
  1. @Autowired
  2. private RestTemplate restTemplate;
  3. private static final String REST_URL_PREFIX = "http://localhost:8001/springcloud-provider-dept";
  4. @GetMapping("get/{id}")
  5. public Integer get(@PathVariable("id") Integer id) {
  6.     return restTemplate.getForObject(REST_URL_PREFIX + "/dept/get/" + id, Integer.class);
  7. }
  8. @GetMapping("list")
  9. public List<Dept> list() {
  10.     return restTemplate.getForObject(REST_URL_PREFIX + "/dept/list", List.class);
  11. }
  12. @PostMapping("insert")
  13. public Integer insert(@RequestBody Dept param) {
  14.     return restTemplate.patchForObject(REST_URL_PREFIX + "/dept/insert", param, Integer.class);
  15. }
复制代码
}
  1. **启动类**
复制代码
package com.wanshi.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
// Ribbon 和 Eureka 整合以后,客户端可以直接调用,不消关心IP地址和端口号
@SpringBootApplication
@EnableEurekaClient
public class DeptConsumerApplication {
  1. public static void main(String[] args) {
  2.     SpringApplication.run(DeptConsumerApplication.class, args);
  3. }
复制代码
}
  1. ## 八、源码下载
  2. [Spring Cluod搭建Eureka注册中心实现服务者与消费者的服务调用]( )
  3. ## ♨️往期精彩热文回顾
  4. ✈️ **[Netty进阶 – WebSocket长连接开发]( )**   
  5. ✈️ **[Netty进阶 – 非阻塞网络编程 实现群聊+私聊+心跳检测系统]( )**
  6. ✈️ **[Postman测试工具调试接口详细教程【向后端发送Json数据并接收返回的Json结果】]( )**
  7. ✈️ **[Java面向对象 — 吃货联盟订餐系统(完整版)]( )**   
  8. ✈️ **[一分钟教你快速 搭建Vue脚手架(Vue-Cli)项目并整合ElementUI]( )**
  9. ## ⛵小结
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表