进阶SpringBoot之服务注册

新建一个空项目

SpringBoot 创建 Web 项目 provider-server(提供者、服务端)

service 包下创建 TicketService 接口,写个方法

package com.demo.service;

public interface TicketService {
    public String getTicket();
}

service 包下创建 TicketServiceImpl 类,实现 TicketService 接口,重写方法

package com.demo.service;

import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

@DubboService
@Component
public class TicketServiceImpl implements TicketService{
    @Override
    public String getTicket() {
        return "Java";
    }
}

Maven 仓库

pom.xml 文件导入包,dubbo-spring-boot-starter、zkclient、zookeeper(排除 slf4j-log4j12)

        <!-- 导入依赖:Dubbo + Zookeeper -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>

        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.11</version>
        </dependency>

        <!-- 引入Zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!-- 排除slf4j-log4j12 -->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

application.properties:

server.port=8001

#服务应用名字
spring.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#哪些服务要被注册
dubbo.scan.base-packages=com.demo.service

开启 Zookeeper 和 Dubbo-admin 服务

SpringBoot 创建 Web 项目 consumer-server(消费者、客户端)

同理,pom.xml 文件导入相同依赖

application.properties:

server.port=8002

#消费者名字
spring.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

两个项目端口号不一致,就需要使用 HTTP 或者 RPC(远程过程调用)

把 TicketService 接口复制到 service 包下,保持和服务端相同的接口名(包名路径要相同)

service 包下创建 UserService 类,从注册中心拿到服务

package com.demo.service;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

@Service //放到容器中
public class UserService {

    //去注册中心拿到服务
    @Reference //引用,Pom坐标,可以定义路径相同的接口名
    TicketService ticketService;

    public void buyTicket(){
        String ticket = ticketService.getTicket();
        System.out.println("注册中心拿到"+ticket);
    }
}

测试类:

package com.demo;

import com.demo.consumerserver.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ConsumerServerApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() {
        userService.buyTicket();
    }
    
}

步骤总结:

前提条件:Zookeeper 服务已开启

1.提供者提供服务

1)导入依赖

2)配置注册中心的地址、服务发现名和要扫描的包

3)在想要被注册的服务上面增加一个注解 @DubboService

2.消费者如何消费

1)导入依赖

2)配置注册中心的地址、配置自己服务名

3)从远程注入服务 @Reference

当然,我可以分享一些关于Spring Boot进阶的笔记。请记住,以下笔记仅供参考,因为Spring Boot是一个非常广泛且不断发展的框架,有许多不同的用例和最佳实践。 1. 自定义Starter:Spring Boot提供了Starter的概念,它是一组必要的依赖项和配置的集合,可用于简化项目的配置。你可以通过创建自定义Starter来封装你的常用依赖项和配置,以便在多个项目中重复使用。 2. 运行时配置:Spring Boot提供了多种方式来配置应用程序。除了传统的application.properties或application.yml文件外,你还可以使用环境变量、命令行参数、系统属性等来配置应用程序。了解这些配置选项将帮助你更好地管理应用程序的行为。 3. 多环境支持:Spring Boot允许你为不同的环境(如开发、测试、生产)提供不同的配置。通过使用不同的配置文件或配置选项,你可以轻松地在不同的环境中管理应用程序的行为。 4. 自定义错误页面:Spring Boot提供了默认的错误页面,但你也可以自定义错误页面以提供更好的用户体验。通过创建一个自定义的错误处理器并将其注册到应用程序中,你可以捕获和处理特定类型的错误,并显示自定义的错误页面。 5. 安全性:Spring Boot集成了Spring Security框架,可以轻松地为应用程序添加身份验证和授权功能。你可以通过配置安全规则、自定义认证逻辑和使用各种身份验证提供者来保护你的应用程序。 6. 数据访问:Spring Boot简化了与各种数据源(如关系型数据库、NoSQL数据库、消息队列等)的集成。你可以使用Spring Data JPA、Spring Data MongoDB等模块来简化数据访问层的开发。 7. 缓存:Spring Boot提供了对各种缓存提供者(如Ehcache、Redis等)的集成支持。通过简单的配置,你可以启用缓存功能,并将其应用于适当的方法或查询。 这些只是Spring Boot进阶中的一些主题,还有许多其他方面可以深入研究。希望这些笔记能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值