首页 > 其他分享 >聊聊如何感知项目引入哪些功能特性

聊聊如何感知项目引入哪些功能特性

时间:2024-05-28 09:34:40浏览次数:14  
标签:features 哪些 spring HasFeatures 聊聊 感知 public cloud String

前言

使用过springcloud全家桶朋友,应该知道springcloud涉及的组件很多,为了让开发者快速了解项目引入了springcloud哪些组件,springcloud引入了HasFeatures,配合Actuator,可以让开发者感知到项目引入的组件功能类型、名称、版本以及对应的开发商。今天我们就利用这个特性,自己实现一把

示例

注:示例模拟短信发送的例子

1、项目中pom引入spring-cloud-common gav

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-commons</artifactId>
            <version>${spring-cloud-commons.version}</version>
        </dependency>

2、定义短信接口以及实现类

public interface SmsService {

    void send(String phone, String content);
}

public class AliyunSmsService implements SmsService {
    @Override
    public void send(String phone, String content) {
        System.out.printf("send to %s content %s used aliyun sms%n", phone, content);
    }
}

3、定义HasFeatures

@Configuration
public class SmsAutoConfiguration {



    @Bean
  public HasFeatures smsFeatures(){
        HasFeatures features = HasFeatures.abstractFeatures(SmsService.class);
        features.getNamedFeatures().add(new NamedFeature("sms auto configuration",SmsAutoConfiguration.class ));
        return features;
  }


}

注: HasFeatures提供2种功能特性。一种是抽象功能,它主要是通过接口或者抽象类去spring上下文,查询具体实现。另外一种是命名功能,该功能不需要实现特定的接口或者抽象类,仅需提供一个name名称和spring bean类型

4、访问/actuator/features,查看相应的功能特性

注: 这边有个细节点,就是需要开启/actuator/features端点。这边为了演示方便,就把所有/actuator端点全部开启

management:
  endpoints:
    web:
      exposure:
        include: "*"

  endpoint:
    health:
      show-details: always

通过http请求访问/actuator/features

  @Autowired
    private InetUtils inetUtils;

    @EventListener
    public void listener(WebServerInitializedEvent webServerInitializedEvent){
       int port = webServerInitializedEvent.getWebServer().getPort();
       String ip = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();

       String featuresUrl = "http://" + ip + ":" + port + "/actuator/features";

        String result = new RestTemplate().getForObject(featuresUrl, String.class);
        PrintUtils.print(result);

    }

查看控制台

这边发现version和vendor都为空,是因为version和vendor是META-INF/MANIFEST.MF文件内容。而该文件在我们打成jar时,会自动生成。因此我们可以打成jar再访问。这里有个小细节就是vendor的获取,需在pom文件配置organization标签,才能读取到。示例如下

  <organization>
        <name>lyb-geek</name>
        <url>https://github.com/lyb-geek</url>
    </organization>

我们将项目打成jar再访问下


可以发现version和vendor都有值了

HasFeatures的实现原理

HasFeatures是spring cloud提供的一种机制。各个功能组件仅需利用HasFeatures将功能组件的核心类封装起来,并注入到spring容器,spring cloud就会从spring容器中获取所有的HasFeatures类并传递到FeaturesEndpoint,调用"/actuator/features"时,便转成Features对象返回注册的功能特性

总结

HasFeatures在简单的项目中,可能用处不大,但是在涉及到很多功能组件时,可以利用HasFeatures机制,让我们快速了解项目引入的功能组件,便于我们快速熟悉项目

demo链接

https://github.com/lyb-geek/springboot-learning/tree/master/springboot-has-features

标签:features,哪些,spring,HasFeatures,聊聊,感知,public,cloud,String
From: https://www.cnblogs.com/linyb-geek/p/18015224

相关文章

  • 制作饭店点餐APP会用到哪些源代码?
    在信息化和数字化浪潮席卷而来的今天,饭店点餐APP的兴起,不仅为顾客提供了更加便捷的点餐方式,也极大地提升了饭店的运营效率和服务水平。那么,制作一款饭店点餐APP,会用到哪些源代码呢?接下来,我们将从五个不同的代码片段入手,为您深入剖析饭店点餐APP背后的技术实现。一、用户界面......
  • Spring支持哪些事务管理类型?
    Spring框架支持两种主要类型的事务管理:编程式事务管理声明式事务管理这两种事务管理各有优缺点,可以根据具体需求和偏好来选择使用。1.编程式事务管理编程式事务管理意味着你必须在代码中显式管理事务。这通常是通过编码来实现的,即使用Spring框架提供的TransactionTempl......
  • ​你见过哪些不过度设计的优秀APP?​
    优联前端https://ufrontend.com/提供一站式企业前端解决方案“每日故宫”是一款以故宫博物院丰富的藏品为基础,结合日历形式展示每日精选藏品的移动应用。通过这款应用,用户可以随时随地欣赏到故宫的珍贵藏品,感受中华五千年文化的魅力。“每日故宫”在交互设计和动画视效......
  • 智慧校园包括哪些项目
    在当今这个日新月异的时代,技术的每一次飞跃都在为教育的未来铺设新的基石。本文将带您探索智慧校园的广阔图景,从智能硬件的普及到云端资源的共享,从数据驱动的决策到无缝连接的家校合作,每一处细节都彰显着教育与科技深度融合的无限可能。在这个旅程中,我们将共同见证教育如何在数......
  • Qt/C++音视频开发75-获取本地有哪些摄像头名称/Qt内置函数方式
    一、前言在需要打开本地摄像头的场景中,有个需求绕不开,那就是如何获取本地有哪些摄像头设备名称,这样可以提供下拉框给用户选择,不然你让用户去填设备名,你觉得用户会知道是啥,他会操作吗?就算你提供了详细的查看步骤,估计也很难,如果用户是程序员还好,如果是电脑小白,鼠标都用不好,你还让他......
  • Tesla技术方案深度剖析:自动标注_感知定位_决策规划_场景重建_场景仿真_数据引擎
    Tesla技术方案深度剖析:自动标注_感知定位_决策规划_场景重建_场景仿真_数据引擎附赠自动驾驶最全的学习资料和量产经验:链接01  感知:构建实时的4D自动驾驶场景1.1 特斯拉摄像头布局特斯拉的摄像头视野可以覆盖车身周围360°,在前向有120°鱼眼、长焦镜头用于加强观测,......
  • wetool企业版使用教程及下载方式 微兔该如何使用 wetool还能用吗 wetool扳手工具wetoo
    今天给大家推荐一款我们目前在使用的电脑群发工具掘金小蜜,不仅可以无限多开,方便你同时管理多个账号,群发功能更是十分强大,轻松释放你的双手。掘金小蜜(只支持Win7及以上操作系统,没有推Mac版和手机客户端。可直接可直接复制链接网页下载  lhttps://jjxx.lanzouo.com/s/jjxm......
  • 一起来聊聊大模型的token
    文章目录前言一、token是什么二、常用分词方法三、GPT-3的分词方式1.代码示例2.`Ġworld`和`world`的区别1)分词中的空格前缀2)后续计算中的区别3.为什么使用子词分词总结前言学习大模型的朋友肯定听说过大模型接口按token,自己编写代码的时候也经常看到tok......
  • 服务器端口号怎么看?如何查看服务器端口号呢?有哪些需要注意的?
    简单来说,端口号就是计算机与外界通讯交流的出口,每个端口都有不同的编号,也就是“端口号”。它们是唯一的,用于标识不同的服务和应用程序。通过端口号,我们可以知道哪些服务正在运行,以及如何与它们进行通信。那么,如何查看服务器端口号呢?以下是一些常用的方法:一、通过命令行查看......
  • ThinkEditor跨平台BS电子病历编辑器控件具备哪些能力
            笔者从事医疗信息化行业工作10多年,对当前热门的BS架构的电子病历编辑器有一些自己的思考发出来供大家讨论,笔者信译,演示网址:www.thinkeditor.com。1.病历结构是否需要结构化        首先是陈旧的自定义字符串格式,虽格式灵活,但需自己编写病历格式解析......