pandora-hsf-spring-boot-starter 与 spring boot 的集成

本文描述了使用 Spring Boot 的编程模型在 Pandora Boot 应用中使用 HSF

maven依赖

导入pandora-boot-starter-bom

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <!-- http://gitlab.alibaba-inc.com/middleware-container/pandora-boot/wikis/spring-boot-2 -->
            <version>2.5.12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.taobao.pandora</groupId>
            <artifactId>pandora-boot-starter-bom</artifactId>
            <version>2023-07-stable-hsf</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>(注意不是<dependencyManagement>/<dependencies>)下添加依赖(无须写版本):

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>pandora-hsf-spring-boot-starter</artifactId>
</dependency>

全局配置

在 application.properties 添加所有 HSF的默认版本信息和客户端超时信息, 样例配置如下:

spring.hsf.group=HSF
spring.hsf.version=1.0.0
spring.hsf.timeout=3000

@HSFProvider

注意是com.alibaba.boot.hsf.annotation.HSFProvider,不是com.taobao.hsf.app.spring.util.annotation.HSFProvider

 首先要编写服务提供者

只需要在发布的服务上添加@HSFProvider,其中DemoService是要发布的服务的接口,注意:注解是加在实现类的头上。

@HSFProvider(serviceInterface = DemoService.class)
public class DemoServiceImpl implements DemoService{}

还可以通过该注解为特定的服务设置配置,可以覆盖全局配置。

@HSFProvider(serviceInterface = DemoService.class, serviceGroup = "HSF", serviceVersion = "1.0.1", clientTimeout = 500)
public class DemoServiceImpl implements DemoService{}

@HSFProvider 中的 serviceGroup 和 serviceVersion 以及其他 String 类型的配置都可以支持 Spring 的 property placeholder, 如:

@HSFProvider(serviceInterface = DemoService.class, serviceGroup = "${service.group.name}")
public class DemoServiceImpl implements DemoService{}

注意:springboot默认只扫描main函数所在的package,如果服务在其他的package里,需要配置@componentScan

@ComponentScan(basePackages = "com.taobao.mypackage")

 此前总结:和feign调用类似,但比feign更简洁,此处只需要在实现类上加注解,但是feign需要专门写feignclient,而且feign是针对controller写的,但是hsf是直接对实现类加注解。

假如我要调用其他的服务中的服务,我需要在目前的项目的启动类上加上@componentScan注解,这样才可以将对应服务的对象加载到我的ioc容器中

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值