小飞知识库 | YeLu🤠MiLu🤪 小飞知识库 | YeLu🤠MiLu🤪
  • 函数式编程
  • Spring
  • SpringMVC
  • SpringBoot
  • SpringCloud
  • Mybatis
  • JVM
  • JUC并发编程
  • 设计模式
  • 单元测试
  • Redis
  • RabbitMQ
  • mysql
  • oracle
  • linux
  • nginx
  • docker
  • elasticSearch
  • windows
  • 虚拟机
  • 监控系统
  • https
  • 内网穿透
  • 前端文章

    • JavaScript
  • 页面

    • HTML
    • CSS
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 版本管理

    • Git笔记
  • 项目构建

    • maven
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • JAR包相关
  • 关于
  • 收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

YeLu

爱技术的YeLu🤠
  • 函数式编程
  • Spring
  • SpringMVC
  • SpringBoot
  • SpringCloud
  • Mybatis
  • JVM
  • JUC并发编程
  • 设计模式
  • 单元测试
  • Redis
  • RabbitMQ
  • mysql
  • oracle
  • linux
  • nginx
  • docker
  • elasticSearch
  • windows
  • 虚拟机
  • 监控系统
  • https
  • 内网穿透
  • 前端文章

    • JavaScript
  • 页面

    • HTML
    • CSS
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 版本管理

    • Git笔记
  • 项目构建

    • maven
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • JAR包相关
  • 关于
  • 收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 函数式编程

  • spring

  • springMVC

  • springCloud

    • 基础

      • 项目的演变
      • 服务的注册与发现
        • 1、建父亲(站点)工程
        • 2、注册中心Eureka的使用
          • 2.1、导包
          • 2.2、编写配置文件
          • 2.3、编写启动工程
        • 3、服务的提供者
          • 3.1、导包
          • 3.2、编写配置文件
          • 3.3、编写启动工程
          • 3.4、准备Controller
        • 4、服务的消费者
          • 4.1、导包
          • 4.1、配置文件
          • 4.2、编写controller
          • 4.3、编写service
          • 4.4、编 写启动程序
  • jvm

  • JUC并发编程

  • mybatis

  • 设计模式

  • 📒springBoot

  • 单元测试

  • java
  • springCloud
  • 基础
YeLu🤠
2023-04-28
目录

服务的注册与发现

# 1、建父亲(站点)工程

给父工程导入依赖

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
<!--给这个父亲工程设置个爹-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
<!--    <version>1.4.1.RELEASE</version>-->
    <version>2.1.3.RELEASE</version>
  </parent>

  <groupId>org.example</groupId>
  <artifactId>com-xufei-springCloud-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <url>http://www.example.com</url>

  <modules>
      <module>com-xufei-springcloud-eureka01</module>
  </modules>
<!--给这个父亲工程设置个依赖版本的管理-->
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Camden.SR1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

# 2、注册中心Eureka的使用

# 2.1、导包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.example</groupId>
        <artifactId>com-xufei-springCloud-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>com.xufei.springcloud</groupId>
    <artifactId>com-xufei-springcloud-eureka01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>com-xufei-springcloud-eureka01</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        
        <!--这个是 eureka 用来配置用户名和密码的时候使用的包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

# 2.2、编写配置文件

#使能安全认证
security.basic.enabled=true
#登陆Eureka的用户名和密码
security.user.name=xiaofeifei
security.user.password=123
#Eureka的端口默认是8761
server.port=8761

#是否要将自己这个服务 注册到Eureka上去(自己一般不注册自己)
eureka.client.register-with-eureka=false
#是否获取注册表信息 一般设置为false
eureka.client.fetch-registry=false

#这个表示的意思是:Eureka 服务端的地址是多少
#eureka.client.service-url.defaultZone: http://xiaofeifei:123@euerka222:8762/eureka,http://xiaofeifei:123@euerka333:8763/eureka
eureka.client.service-url.defaultZone: http://xiaofeifei:123@localhost:8761/eureka

#eureka.instance.hostname=eureka111
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 2.3、编写启动工程

@SpringBootApplication
@EnableEurekaServer
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
}
1
2
3
4
5
6
7

页面访问 http://127.0.0.1:8761/

# 3、服务的提供者

# 3.1、导包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.example</groupId>
        <artifactId>com-xufei-springCloud-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>com.xufei.springcloud</groupId>
    <artifactId>cd-2001-springcloud-user-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>cd-2001-springcloud-user-server</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--这个是提供者 所需要的包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

# 3.2、编写配置文件

#服务的端口
server.port=8081
#这个表示的意思是:Eureka这个服务端的地址是多少(主要是告诉服务的提供者注册中心的地址)
eureka.client.service-url.defaultZone: http://xiaofeifei:123@localhost:8761/eureka
#这个意思是是否将localhost这种翻译成ip地址
eureka.instance.prefer-ip-address=true
#application实例的id的构成
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
#给服务取名字
spring.application.name=user-server
1
2
3
4
5
6
7
8
9
10

# 3.3、编写启动工程

@SpringBootApplication
@EnableEurekaClient //这个就表示是服务的提供者
public class UserServerApplication {

    public static void main(String[] args){
        SpringApplication.run(UserServerApplication.class,args);
    }
}
1
2
3
4
5
6
7
8

# 3.4、准备Controller

@RestController
public class UserController {
    /**
     * 登陆的这个方法
     * @return
     */
    @RequestMapping("login")
    public Object login(){
        System.out.println("小飞飞到此一游...");
        return "登陆成功";
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

# 4、服务的消费者

项目参考 cd-xufei-springcloud-chanel-server 模块

# 4.1、导包

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--接下来导入服务的Eureka的包和服务的发现的包-->
        <!--服务的发现的包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
        <!--服务的降级和熔断的功能包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 4.1、配置文件

#给当前的服务配置端口
server.port=8080
#给当前的服务取名字
spring.application.name=chanel-server
#Eureka的服务器的地址(主要是告诉服务的提供者注册中心的地址)因为消费者需要从注册中心获取服务列表
eureka.client.service-url.defaultZone: http://xiaofeifei:123@localhost:8761/eureka
#开启这个服务的降级
feign.hystrix.enabled=true
1
2
3
4
5
6
7
8

# 4.2、编写controller

@RestController
public class ChanelController {

    @Autowired
    private IUserService userService;

    private Logger logger = LoggerFactory.getLogger(ChanelController.class);

    /**
     * 调用登陆的方法
     * @return
     */
    @RequestMapping("/login1")
    //getFallback 这个定义的是controller出现异常执行的自定义方法 就是服务的熔断,服务的降级是远程服务器出现问题
    @HystrixCommand(fallbackMethod = "getFallback") //服务的熔断和降级使用这个注解
    public Object login1(){
        logger.info("进入了 login1 方法");
        //这里我们要调用user-server(服务的提供者)中的方法
        User user = userService.login();
//        int k=1/0;
        System.out.println("调用服务返回的值是:"+user);
        return user;
    }

    /**
     * 测试服务的熔断
     * @return
     */
    public Object getFallback() {
        System.out.println("这里是服务熔断的方法...");
        return new User(2,"服务出现熔断了","123") ;
    }
    /**
     * 调用通过id查询用户的方法
     * @return
     */
    @RequestMapping("findUserById")
    public Object findUserById(){
        logger.info("执行了findUserById方法");
        //到这里我们要调用user-server中的方法
        User user = userService.findUserById(1);
        System.out.println("调用服务返回的值是:"+user);
        return "这里是执行成功的...";
    }
    /**
     * 注册的方法
     * @return
     */
    @RequestMapping("register")
    public Object register(){
        logger.info("执行了register方法");
        //到这里我们要调用user-server中的方法
        User user = userService.register("大飞飞","1234");
        System.out.println("调用服务返回的值是:"+user);
        return "执行成功啦...";
    }
    /**
     * 修改用户
     * @return
     */
    @RequestMapping("update")
    public Object update(){
        logger.info("执行了update方法");
        //到这里我们要调用user-server中的方法
        User user = userService.update(new User(2,"铁蛋","234"));
        System.out.println("调用服务返回的值是:"+user);
        return "执行成功啦...";
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

# 4.3、编写service

fallbackFactory = MyFallBackfactory.class 这个就是服务降级的一个配置
服务的发现,value=zuul-server 的意思是(服务提供者)的服务的名称
1
2
//@FeignClient(value = "zuul-server",fallbackFactory = MyFallBackfactory.class)
@FeignClient(value = "user-server")
public interface IUserService {
    /**
     * 登陆的这个方法
     * @return
     */
    //@RequestMapping("/feifei/zuul-proxy/login")
    @RequestMapping(value = "/login")
    @ResponseBody
    User login();
    /**
     * 通过id查找用户
     * @param id
     * @return
     */
    //@RequestMapping(value = "/feifei/zuul-proxy/findUserById")
    @RequestMapping(value = "/findUserById")
    @ResponseBody
    User findUserById(@RequestParam("id") int id);
    /**
     * 注册的接口
     * @param userName
     * @param passWord
     * @return
     */
    @RequestMapping(value = "/feifei/zuul-proxy/register")
    @ResponseBody
    User register(@RequestParam("userName") String userName,@RequestParam("passWord") String passWord);
    /**
     * 修改用户
     * @param user
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/feifei/zuul-proxy/update",method = RequestMethod.POST)
    User update(@RequestBody User user);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

# 4.4、编 写启动程序

@SpringBootApplication
//消费者调用服务的提供者的接口除了需要再业务接口添加 @FeignClient 注解之外还需要添加以下两个注解
@EnableFeignClients
@EnableDiscoveryClient

@EnableCircuitBreaker   //启动这个熔断器 服务的熔断和降级使用这个注解
public class ChanelServiceApplication {
    public static void main(String[] args){
        SpringApplication.run(ChanelServiceApplication.class,args);
    }
}
1
2
3
4
5
6
7
8
9
10
11

启动项目访问改模块接口,测试调用服务的提供者的接口

127.0.0.1:8080/login1

#springCloud
最近更新: 2025/07/30, 15:37:56
项目的演变
介绍

← 项目的演变 介绍→

最近更新
01
服务端配置
07-30
02
frp 安装
07-30
03
Prometheus采集Springboot应用
02-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 | YeLu🤠MiLu🤪 | MIT License 蜀ICP备2024116879号 | 川公网安备51012202001998号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
欢迎你,我的朋友
看板娘