1.TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化
2.Spring Boot Security 整合 OAuth2 设计安全API接口服务
3.一个很有想法的开源项目rocket-api
4.Java21 + SpringBoot3整合springdoc-openapi,自动生成在线接口文档,支持SpringSecurity和JWT认证方式
5.SpringBoot集成文件 - 如何使用POI导出Word文档?
6.OpenHarmony轻量设备Hi3861芯片开发板启动流程分析
TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化
SpringBoot,作为Java开发领域广受欢迎的技术框架,在构建Web应用程序和微服务方面发挥着重要作用。它通过简化开发流程、源码资本天眼提供约定大于配置的原则以及集成常用库和组件,助力开发者高效构建应用程序。
为了帮助开发者更好地掌握SpringBoot,我们整理了TDengine资深研发的内部分享——《SpringBoot 多语言支持方案》,供开发者参考。
在项目依赖中引入spring-boot-starter和spring-boot-autoconfigure两个包,即可使用SpringBoot提供的多语言定义和解析工具。在spring-boot-autoconfigure的源码中,可以看到MessageSourceAutoConfiguration类已自动装配了MessageSource对象。
在IDEA中,在resources资源包上右键新建资源包,填写资源包名如:messages,选择区域设置,包括en、zh_CN、zh_TC等选项。在resources包内即可看到绑定的多语言文件。
在配置文件中添加message,格式为:{ code}={ message}。在业务模块中使用多语言消息,首先分析API服务请求响应流程,包括身份认证、API接口鉴权认证、权限识别等,验证通过后进入业务逻辑,最后通过接口返回。
异常国际化配置可以通过定义多语言message和获取LocaleMessageProvider实现。cf卡房源码SpringBoot框架通过LocaleContextHolder.getLocale()获取Locale,并在RequestContextFilter中设置LocaleContext。
客户端在请求中添加Accept-Language=zh-CN头,即可验证返回的结果。例如,登录出错时,客户端接收到的信息为国际化后的错误信息。
以上就是基于SpringBoot多语言支持方案的完整分享,希望对开发者有所帮助。如有其他技术问题或时序数据处理难题,可联系TDengine的技术研发人员进行沟通。
TDengine是一款高性能、集群开源、云原生的时序数据库,专为物联网、工业互联网、电力、IT运维等场景设计。它具有内建的缓存、流式计算、数据订阅等系统功能,降低系统设计复杂度和研发运营成本。TDengine提供TDengine Enterprise和TDengine Cloud两个版本,用户可根据需求选择。
Spring Boot Security 整合 OAuth2 设计安全API接口服务
本文聚焦于在Spring Boot项目中实现OAuth2,强调其在安全API接口服务中的整合与应用。OAuth2标准在授权管理方面具备广泛应用,尤其在社交平台登录场景中发挥关键作用。通过理解OAuth2模式,特别是在授权码模式下的实现细节,开发者能够构建具备高度安全性的API接口服务。
OAuth2具备四种主要模式,全民奇迹推广源码其中授权码模式因其实用性和复杂性,成为项目中的首选。此模式将授权过程与访问令牌生成分离,使得API资源访问更加安全可控。
在实际应用中,OAuth2授权由两个核心部分构成:客户端认证和授权码获取。这些步骤通常在服务器端执行,确保数据安全与访问控制。
对于Spring Boot开发者而言,整合OAuth2通常涉及配置Spring Security,处理不同授权模式的请求,并与数据库、Redis等存储机制协同工作。构建支持密码授权模式的项目时,关键在于配置AuthenticationManager以验证用户凭据。
在资源服务器配置中,重点在于定义如何处理不同类型的授权请求,实现如密码模式、客户端模式和授权码模式等。关键代码示例包括在SecurityConfig中引入自定义认证管理器、在AuthorizationServerConfiguration中设置认证服务器的配置、以及在ResourceServerConfig中定义资源服务器的访问策略。
密码授权模式要求提供用户名、密码、授权类型、客户端ID和客户端秘密,以便获取访问令牌。通过验证密码,系统返回访问令牌,未携带令牌尝试访问资源将导致未授权错误,而携带有效令牌的请求则顺利通过。
客户端授权模式仅需提供授权类型、cheat engine源码失败客户端ID和客户端秘密,以获取访问令牌。此模式简化了用户认证过程,便于集成到第三方应用中。
授权码模式涉及一系列交互过程,包括客户端请求、用户认证、授权确认以及最终的令牌获取。通过这一模式,系统能够确保用户授权并生成授权码,客户端随后利用此码换取访问令牌,从而实现对资源的访问。
本文未深入源码细节,但提供了一系列参考资源,包括代码示例和相关讨论平台链接,帮助开发者进一步理解并实现OAuth2在Spring Boot项目中的应用。
一个很有想法的开源项目rocket-api
本文介绍了名为rocket-api的开源项目,其主要特性在于通过界面化定义语义碎片生成所需的访问代码,实现无需编写传统的Controller,VO,DAO层代码。初次接触可能稍显困惑,但通过官网的教程和本地运行实践后,可以更深入理解其工作原理。
官网提供了快速部署指南,用户可以轻松搭建项目。值得注意的是,项目需要外置数据库以创建初始表,但不需要初始化数据,登录账号应与数据库账号相同。
官网文档中还展示了如何在1分钟内实现一个API接口,通过定义映射访问自定义脚本“select * from aaa”所查出的caffe lstm 源码分析数据。API数据持久化存储,即使项目重启,仍可访问指定端点。有趣的是,虽然未在源码中见到类生成,但新增的映射能够通过访问运行。
火箭-api底层使用了Java 1.8后提供的ScriptEngineManager和Groovy引擎,实现动态编译。首次访问后生成Java类,后续调用直接运行,无需编译。这使得项目高效、灵活。
核心处理类QLRequestMappingFactory负责将API注册为request mapping,并解析入参和存储的执行脚本。requestMappingHandlerMapping是SpringBoot提供的方法,用于动态注册映射,适用于需要此类功能的项目。
执行脚本的方法默认使用Groovy引擎,输入框语法支持完全的Groovy语法,允许进行复杂的数据处理。对于想要尝试的用户,了解这些特性后,可以进一步探索如何通过Groovy语法实现更复杂的操作。
总结而言,火箭-api提供了一种新颖、高效的方式来构建API,通过简化代码生成和动态执行,提高了开发效率并增强了功能灵活性。通过深入学习其原理和使用方法,用户可以更充分地利用这一工具,实现自己的项目需求。
Java + SpringBoot3整合springdoc-openapi,自动生成在线接口文档,支持SpringSecurity和JWT认证方式
在Java 2.1与SpringBoot 3的项目开发中,我探索了一种方法,即通过整合springdoc-openapi来实现在线接口文档的自动生成,支持Spring Security和JWT认证。我的目标是打造一个适应多端且功能丰富的开发模板,方便开发者快速构建和扩展。 本项目采用前后端分离模式,后端基于Java 2.1和SpringBoot 3,利用Spring Security、JWT、Spring Data JPA等技术进行开发,前端则提供了vue、angular、react、uniapp和微信小程序等多种技术栈。重点在于,如何利用OpenAPI规范来定义和展示API,这使得开发者无需深入了解源代码,就能理解API的功能和用法,极大地提高了开发效率。 OpenAPI规范,即OAS,定义了RESTful API的通用标准,让开发者和工具能够理解和操作API。遵循OpenAPI,可以使用文档生成工具展示API,代码生成工具自动生成代码,甚至进行自动化测试。中国的OpenAPI规范中文版文档可参考这里。 Swagger作为OpenAPI的实现工具,提供了组件如描述文件的维护,有助于更新文档和生成客户端和服务器端代码。Swagger的官方文档可在这里找到。 Springfox是基于Swagger 2.x的API文档生成工具,它简化了Java开发者的工作,提供了注解支持和自动生成文档的功能。Springfox官方文档位于这里。 然而,随着技术的发展,SpringDoc基于OpenAPI 3.0规范应运而生,成为了Spring Boot 2.4及以上版本的首选。相比Springfox,SpringDoc提供了更强大的扩展性和更好的社区支持。在SpringBoot 3中,推荐使用springdoc-openapi-ui进行集成。SpringDoc的官方文档可在这里查阅。 在实践中,要实现这个功能,首先在pom.xml中引入springdoc-openapi-starter-webmvc-ui等相关依赖,然后配置application.yml,设定api-docs和swagger-ui的访问路径。如果项目有权限控制,需适当设置访问权限,如允许匿名访问api-docs和swagger-ui。在Controller类和实体类中,使用@Operation注解配合之前定义的security配置来指定认证方式。 通过上述步骤,你可以生成符合规范的接口文档,方便团队协作和API的使用。后续我会不断更新学习心得,期待与大家一起进步。SpringBoot集成文件 - 如何使用POI导出Word文档?
Apache POI是一个Java API,用于操作Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)。它允许通过SpringBoot集成实现Word文件的导出。本文将详细讲解如何使用POI工具在SpringBoot中实现Word导出功能。@pdai
知识准备
为了使用Apache POI,需要理解其遵循的标准。这对应了API的依赖包。@pdai
什么是POI
Apache POI是Java编写的免费开源跨平台API,提供Java程序读写Microsoft Office格式档案的功能。名称源自“Poor Obfuscation Implementation”,意为“简洁版的模糊实现”。
官方文档
Apache POI支持Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)。更多详细信息请访问官方文档。
实现案例
下面展示了一个SpringBoot集成POI导出用户信息的Word示例。
Pom依赖
在项目中添加poi依赖包。
导出Word
在UserController中实现导出方法。
UserServiceImple
在UserServiceImple中具体实现导出Word的方法。
导出
通过UserServiceImple中的方法,可以实现将数据导出为Word文件。
导出后的word
导出后的Word文件将包含用户信息。
示例源码
完整的代码示例可以在github仓库中找到。
参考文档
更多关于Apache POI的信息和文档可以访问官方站点。
更多内容
学习后端开发,可以参考Java全栈知识体系,获取一站式体系化的学习资源。
OpenHarmony轻量设备Hi芯片开发板启动流程分析
OpenHarmony作为一款覆盖从嵌入式实时物联网操作系统到移动操作系统的全面操作系统,其内核包括LiteOS-M、LiteOS-A和Linux。LiteOS-M是专为物联网领域设计的轻量级内核,适合没有MMU的处理器。例如,Hi是一款集成2.4GHz SoC WiFi芯片,具有高性能位微处理器、最大工作频率MHz、SRAM KB、ROM KB和2MB Flash。采用LiteOS-M的OpenHarmony开发板,如深开鸿、润和软件和小熊派等厂商的设备均采用相同的启动流程。
Boot作为操作系统的启动软件,通常称为bootloader,Hi的Boot分为四个部分:RomBoot、FlashBoot、LoaderBoot和CommonBoot。RomBoot负责加载LoaderBoot到RAM,进一步利用LoaderBoot下载镜像到Flash、烧写EFUSE并校验引导FlashBoot。FlashBoot分为AB两面,A面校验成功直接启动,校验失败则尝试B面,B面校验成功会修复A面并引导启动,否则系统会复位重启。LoaderBoot主要负责下载镜像到Flash和烧写EFUSE,而CommonBoot则是FlashBoot与LoaderBoot共享的功能模块。
在分析启动流程时,可以关注编译完成固件中的几个关键部分,如文本段包含源代码函数和字符串常量。通过map文件和asm文件,可以理解编译链接工具生成的全局符号、函数地址及其占用空间和位置。这些文件位于out目录,与操作系统固件平级,有助于分析崩溃原因和跳转关系。
LiteOS-M启动流程从Boot开始,通过跳转调用到内核初始化函数LOS_KernelInit,主要负责内存、中断和任务初始化,为API函数调用准备全局信息。接着,OHOS_Main函数负责调用OpenHarmony系统相关和用户应用相关代码,确保在LOS_start之前任务列表已填充,以实现系统调度。
用户应用的启动原理基于宏定义,展开后调用系统初始化函数。通过链接文件和map文件,可以发现应用代码位于特定的初始化段中。总结而言,最小硬件系统配置后,通过系统初始化、调用OpenHarmony和应用代码,最终启动操作系统。
在没有源代码的情况下,通过对map文件和asm文件的分析,可以有效理解Hi芯片开发板LiteOS-M的启动流程。整个过程从最小硬件系统配置开始,由LOS_KernelInit初始化系统到合适状态,AppInit调用OpenHarmony和应用相关代码,最后由LOS_Start启动操作系统。