1.TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化
2.Spring Boot 调用外部接口的 3 种方式
3.springbootå建apiï¼
4.Spring Boot 调用外部接口的 3 种方式,还有谁不会?!
5.神器 SpringDoc 横空出世!最适合 SpringBoot 的API文档工具来了
6.springdoc-openapi:帮助spring-boot自动生成API的开源库工具
TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化
SpringBoot,作为Java开发领域广受欢迎的技术框架,在构建Web应用程序和微服务方面发挥着重要作用。zuul源码它通过简化开发流程、提供约定大于配置的原则以及集成常用库和组件,助力开发者高效构建应用程序。
为了帮助开发者更好地掌握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实现。SpringBoot框架通过LocaleContextHolder.getLocale()获取Locale,并在RequestContextFilter中设置LocaleContext。
客户端在请求中添加Accept-Language=zh-CN头,即可验证返回的结果。例如,登录出错时,客户端接收到的信息为国际化后的错误信息。
以上就是基于SpringBoot多语言支持方案的完整分享,希望对开发者有所帮助。如有其他技术问题或时序数据处理难题,可联系TDengine的技术研发人员进行沟通。
TDengine是一款高性能、集群开源、云原生的时序数据库,专为物联网、工业互联网、电力、IT运维等场景设计。它具有内建的缓存、流式计算、数据订阅等系统功能,降低系统设计复杂度和研发运营成本。TDengine提供TDengine Enterprise和TDengine Cloud两个版本,用户可根据需求选择。
Spring Boot 调用外部接口的 3 种方式
1 简介
SpringBoot提供简便的开发与部署方式,简化了Spring应用的搭建过程,尤其在访问外部接口方面提供了多种方式。主力状态密码源码在进行API聚合或调用外部服务时,SpringBoot提供了三种主流的接口调用方法,这里将详细介绍。
2 方式一:使用原始.biboheart.demos.apiï¼è¿ä¸ªå éæ¾ç½®APIæ¥å£çRestController
å¨com.biboheart.demos.apiå ä¸å建ä¸ä¸ªclass:ParamControllerãè¿ç« ç示ä¾é½å¨è¿ä¸ªç±»ä¸è¿è¡ã
è·¯å¾ä¸å å«åæ°ï¼è¿ç§æ åµéåä¸ä¼ éä¸ä¸ªä¸è½ä¸ºç©ºå¼çåæ°ãæ¯å¦æäºåºç¨ä¸ï¼æ¥è¯¢æ个ä¼ä¸çæ°æ®ï¼å¿ é¡»å å«ä¼ä¸çç¼å·ï¼å°±å¯ä»¥å¨å°åéæ¥æ¶è¿ä¸ªç¼å·ã
å¨ParamControllerä¸å¢å ä¸ä¸ªå½æ°PathParam
è·¯å¾ä¸çåæ°éè¿{ sn}æ¥æ¶å¼ã
使ç¨å称æ¥æ¶åæ°æ¯è¾ç´è§ï¼æç¨å¾æ¯è¾å¤ãä¸ç¨æ³¨è§£ãè·å®¢æ·ç«¯ä¼ çåæ°ååå°±å¯ä»¥æ¥æ¶å°ãå¦ä¸ä¾åä¸çreqParam
ä¹å¯ä»¥ç¨getä¼ å
ä¸é¢ç¨åæ°å称æ¥æ¶å¼ï¼åªè¦ä¸è¯·æ±æ¶çå称ä¸è´å°±è½æ¥æ¶å°åæ°å¼ãå¦æéè¦ä¼ éçåæ°æ¯è¾å¤çæ¶åï¼å°±ä¸éåä¸ä¸ªä¸ä¸ªåæ°åå¨å½æ°éäºï¼é£æ ·å¾ä¸æ¹ä¾¿ï¼ä¹å®¹æåºéãå¯ä»¥æè¿äºåæ°åå°ä¸ä¸ªå¯¹è±¡éæ¥æ¶ãå¦ä¸ä¾å
å建ä¸ä¸ªpackage:com.biboheart.demos.modelï¼å建ä¸ä¸ªç±»Person
ç¨Person对象æ¥æ¶åæ°
è½ç¶è¿æ ·çæ¹å¼ä¹è½æ¥æ¶getä¼ åï¼ä½æ¯å 为éè¦ä¼ çåæ°å¤äºï¼ç¨getæ¾å¾ä¸å¤ªæ¹ä¾¿ãè¿éå°±ä¸æµè¯GETæ¹å¼è¯·æ±äºã
æçæ¶åï¼éè¦æ¥æ¶JSONä¼ åãæ¯å¦æäºæå¡çè°ç¨éè¦å¼åä¸ä¸ªåè°å½æ°æ¥æ¶å¯¹æ¹çåè°å¹¶è·å¾åæ°å¼ä¸ºç»æï¼å¯¹æ¹åè°åæ¥çå¼æ¯JSONæ ¼å¼çå¼ï¼è¿æ¶åå°±éè¦æ¥æ¶JSONä¼ åæ°äºãç¨RequestBodyå¯ä»¥æ¥æ¶å°JSONä¼ å¼ã
éè¦JSON请æ±æè½æ£ç¡®æ¥å°å¼
SpringBootå®ä¾:å»é¢ç»ä¸ä¿¡æ¯å¹³å°(apigateway)
åé¢å·²ç»å¨å¹³å°ä¸ä½¿ç¨äºspringcloudãæ¯ä¸ªå°çæå¡ä¸åèªå®ç°ç¸å ³ä¸å¡ï¼æä¾APIãè¿äºæå¡ç访é®å°åé½å¯è½ä¸ä¸æ ·ãè¿æ ·ç»ä½¿ç¨é½é æå°æ°ï¼èä¸æå¡å¨æ¥å£ç®¡çä¹å¤æäºã
api-gatewayå°±æ¯æè¿äºapiéè¿ä¸ä¸ªæå¡æä¾åºå»ãå¨è¿ä¸ªæå¡ä¸ä»£çå ¶å®æå¡çAPIã对äºæå¡ç使ç¨é½å°±åæ¯è®¿é®ä¸å°æå¡å¨ã
è¿éç¨springzuulå®ç°api-gatewayã
å建ä¸ä¸ªé¡¹ç®ï¼æå¡ï¼ï¼ä¸é¨åapi代çãæå¡å称huip-routerã
pom
RouterApplication
为äºæ¯æè·¨åï¼å¢å ä¸ä¸ªFilter
é ç½®
å¨API请æ±å¼å¤´ä¸º/huipuser/æ¶è®¿é®çæ¯useræå¡çAPIï¼å¦æå¼å¤´/huippatient/æ¶è®¿é®çæ¯patientæå¡çAPIãæ¯å¦è¯·æ±ç¸å½äº
请æ±æµè¯ã
SpringBootå®ä¾:å»é¢ç»ä¸ä¿¡æ¯å¹³å°(æå¡é´é讯)ç访é®æµç¨æ¹æç¨ä»£çã
åºäºSpringBootçAPIæµè¯äºèç½äº§åçæµè¯çç¥ç°å¨å¾å¤é½ä¼åå¨APIæµè¯ãè½»é级GUIæµè¯ãè½»é级åå æµè¯çãAPIæµè¯å ¶å®æ们ä¸å¼å§æ³å¾æå¤çå¾å½¢åå·¥å ·åºè¯¥æ¯postmanãjmeterçãå¦æ使ç¨æç®åçgetæ¹æ³ï¼è¿å¯ä»¥ç´æ¥éè¿ä½¿ç¨CURLå½ä»¤ï¼å³å½ä»¤è¡å·¥å ·cURLï¼ã
ä¸ç®¡ä½¿ç¨ä»ä¹APIæµè¯å·¥å ·ï¼APIæµè¯çåºæ¬æ¥éª¤å¤§ä½ä¸è´ï¼
1.åå¤æµè¯æ°æ®
2.éè¿APIæµè¯å·¥å ·ï¼å起对被æµAPIçrequest
3.éªè¯è¿åç»æçresponse
æ们平æ¶å¨å·¥ä½ä¸ï¼æ¥è§¦å¾æå¤çæ¯ç¨JAVAæ¡æ¶Springbootæ¡æ¶å¼åçç®åçRestfulAPIã
Springboot建议çç®å½ç»æå¦ä¸ï¼rootpackageç»æ-com.example.myproject
ç§ç§äººå®¶ç¨SpringBootåçå端APIæ¥å£ï¼é£å«ä¸ä¸ªä¼éå设å®ç°ä¸ä¸ªæ³¨åç¨æ·çåè½ï¼å¨controllerå±ï¼ä»ä¼å è¿è¡æ ¡éªåæ°ï¼å¦ä¸ï¼
以ä¸ä»£ç æä»ä¹é®é¢åï¼å ¶å®æ²¡ä»ä¹é®é¢ï¼å°±æ¯æ ¡éªæç¹è¾£ç¼çãæ£å¸¸çæ·»å ç¨æ·ä¸å¡è¿æ²¡åï¼åæ°æ ¡éªå°±ä¸å¤§å å¦ãå设åæ¥ï¼åæ¥äºä¸ä¸ªéæ±ï¼ç¼è¾ç¨æ·ä¿¡æ¯ãå®ç°ç¼è¾ç¨æ·ä¿¡æ¯åï¼ä¹æ¯å æ ¡éªä¿¡æ¯ï¼å¦ä¸ï¼
æ们å¯ä»¥ä½¿ç¨æ³¨è§£çæ¹å¼ï¼æ¥è¿è¡åæ°æ ¡éªï¼è¿æ ·ä»£ç æ´å ç®æ´ï¼ä¹æ¹ä¾¿ç»ä¸ç®¡çãå®é ä¸ï¼springbootæ个validationçç»ä»¶ï¼æ们å¯ä»¥æ¿æ¥å³ç¨ãå¼å ¥è¿ä¸ªå å³å¯ï¼
å¼å ¥å åï¼åæ°æ ¡éªå°±é常ç®æ´å¦ï¼å¦ä¸ï¼
ç¶åå¨UserParamåæ°å¯¹è±¡ä¸ï¼å å ¥@Validated注解åï¼æé误信æ¯æ¥æ¶å°BindingResult对象ï¼ä»£ç å¦ä¸ï¼
å¦æä½ å¨ä½ 们项ç®ä»£ç ä¸ï¼çå°controllerå±æ¥æè¿åç»æï¼æè¿æ ·çï¼
ä¹æè¿æ ·çï¼
æ¾ç¶ï¼å¦ææ¥å£è¿åç»æä¸ç»ä¸ï¼å端å¤çå°±ä¸æ¹ä¾¿ï¼æ们代ç ä¹ä¸å¥½ç»´æ¤ãåæ¯å¦æç人å欢ç¨Resultå¤çç»æï¼æç¹äººå欢ç¨Responseå¤çç»æï¼å¯ä»¥æ³è±¡ä¸ä¸ï¼è¿äºä»£ç æå¤ä¹±ã
æ以ä½ä¸ºå端å¼åï¼æ们项ç®çååºç»æï¼éè¦ç»ä¸æ åçè¿åæ ¼å¼ãä¸è¬ä¸ä¸ªæ åçååºæ¥æ对象ï¼é½æåªäºå±æ§å¢ï¼
ååºç¶æç ä¸è¬ç¨æ举表示åï¼
å 为è¿åçæ°æ®ç±»åä¸æ¯ç¡®å®çï¼æ们å¯ä»¥ä½¿ç¨æ³åï¼å¦ä¸ï¼
æäºç»ä¸çååºä½ï¼æ们就å¯ä»¥ä¼åä¸ä¸controllerå±ç代ç å¦ï¼
æ¥å¸¸å¼åä¸ï¼æ们ä¸è¬é½æ¯èªå®ä¹ç»ä¸çå¼å¸¸ç±»ï¼å¦ä¸ï¼
å¨controllerå±ï¼å¾å¯è½ä¼æ类似代ç ï¼
è¿å代ç ï¼æ²¡ä»ä¹é®é¢åï¼ä½æ¯å¦ætry...catch太å¤ï¼ä¸æ¯å¾ä¼é ã
å¯ä»¥åå©æ³¨è§£@RestControllerAdviceï¼è®©ä»£ç æ´ä¼é ã@RestControllerAdviceæ¯ä¸ä¸ªåºç¨äºControllerå±çåé¢æ³¨è§£ï¼å®ä¸è¬é å@ExceptionHandler注解ä¸èµ·ä½¿ç¨ï¼ä½ä¸ºé¡¹ç®çå ¨å±å¼å¸¸å¤çãæ们æ¥çä¸demo代ç åã
è¿æ¯åæ¥çUserControllerï¼åä¸ä¸ªä¼æåºå¼å¸¸çuserServiceçæ¹æ³ï¼å¦ä¸ï¼
æ们åå®ä¹ä¸ä¸ªå ¨å±å¼å¸¸å¤çå¨ï¼ç¨@RestControllerAdvice注解ï¼å¦ä¸ï¼
æ们ææ³è¦æ¦æªçå¼å¸¸ç±»åï¼æ¯å¦æ³æ¦æªBizExceptionç±»åï¼å°±æ°å¢ä¸ä¸ªæ¹æ³ï¼ä½¿ç¨@ExceptionHandler注解修饰ï¼å¦ä¸ï¼
SpringBoot2åºäºSwagger2çæ离线Apiææ¡£Github:
Gitee:
个人è§å¾æ§ççé ç½®ç®å许å¤ï¼æ°ççé ç½®æç §å®æ¹demoçé ç½®æ¥åè¿æ¯å¤æäºå¾å¤
é ç½®å°Springboot项ç®ä¸ä»¥åï¼å¨é¡¹ç®æå çæ¶å便ä¼éè¿åå æµè¯å¨æå®çç®å½çæ被å®æ¹ç§°ä¸ºstaticdocsç离线ææ¡£
该ç¯åæå¼ç¨çä¾èµé½è¦å¼å ¥ï¼SpringRestDocsçä¾èµspring-restdocs-mockmvcï¼ç¦»çº¿ææ¡£çä¾èµspringfox-staticdocsï¼å 为è¦å¨åå æµè¯çæ¶åçæææ¡£ï¼æ以éè¦åå æµè¯ç¸å ³çspring-boot-starter-testã
asciidoctor-maven-pluginæ件ä¼æAsciidocæ ¼å¼æ件转æHTML5æ ¼å¼è¾åºã
è¿ä¸ªç±»å å«ä¸¤ä¸ªæ¹æ³ï¼TestApi()æ¯ç¨æ¥çæä¾åï¼test()ç¨æ¥çæAsciidocçææ¡£ãçæä¾åç¨å°äºspring-restdocs-mockmvcï¼æ¯ä¸ä¸ªAPIé½è¦è¿è¡åå æµè¯æè½çæç¸åºçææ¡£ç段ï¼snippetsï¼ï¼çæçç»æå¦å¾ï¼
çæå®æ´çAsciidocææ¡£ç¨å°äºSwagger2MarkupConverterï¼ç¬¬ä¸æ¥å è·åå¨çº¿çæ¬çæ档并ä¿åå°æ件swagger.jsonä¸ï¼ç¬¬äºæ¥æswagger.jsonåä¹åçä¾åsnippetsæ´å并ä¿å为Asciidocæ ¼å¼çå®æ´ææ¡£ãçæç»æå¦å¾ï¼
éè¿é 置类å®ä¹ä¸äºææ¡£ç¸å ³çä¿¡æ¯
è·¯å¾ï¼é¡¹ç®å/docs/asciidoc/index.adoc
å©ç¨åé¢é ç½®çmavenæ件ï¼åªéè¦æ§è¡æå å°±å¯ä»¥çæç¸åºçææ¡£ï¼å¦å¾ï¼
该ç¯åæå¼ç¨çä¾èµé½è¦å¼å ¥ï¼SpringRestDocsçä¾èµspring-restdocs-mockmvcï¼ç¦»çº¿ææ¡£çä¾èµspringfox-staticdocsï¼å 为è¦å¨åå æµè¯çæ¶åçæææ¡£ï¼æ以éè¦åå æµè¯ç¸å ³çspring-boot-starter-testã
asciidoctor-maven-pluginæ件ä¼æAsciidocæ ¼å¼æ件转æHTML5æ ¼å¼è¾åºã
è¿ä¸ªç±»å å«ä¸¤ä¸ªæ¹æ³ï¼TestApi()æ¯ç¨æ¥çæä¾åï¼createSpringfoxSwaggerJson()ç¨æ¥çæAsciidocçææ¡£ãçæä¾åç¨å°äºspring-restdocs-mockmvcï¼æ¯ä¸ä¸ªAPIé½è¦è¿è¡åå æµè¯æè½çæç¸åºçææ¡£ç段ï¼snippetsï¼ï¼çæçç»æå¦å¾ï¼
çæå®æ´çAsciidocææ¡£ç¨å°äºSwagger2MarkupConverterï¼ç¬¬ä¸æ¥å è·åå¨çº¿çæ¬çæ档并ä¿åå°æ件swagger.jsonä¸ï¼ç¬¬äºæ¥æswagger.jsonåä¹åçä¾åsnippetsæ´å并ä¿å为Asciidocæ ¼å¼çå®æ´ææ¡£ãçæç»æå¦å¾ï¼
éè¿é 置类å®ä¹ä¸äºææ¡£ç¸å ³çä¿¡æ¯
å¨resourcesç®å½ä¸å建ä¸ä¸ªå为logback.xmlçé ç½®æ件ï¼ä½¿ç¨LogstashEncoderä½ä¸ºDefaultLogEncoder
è·¯å¾ï¼é¡¹ç®åsrc/docs/asciidoc/index.adoc
å©ç¨åé¢é ç½®çmavenæ件ï¼åªéè¦æ§è¡æå å°±å¯ä»¥çæç¸åºçææ¡£ï¼å¦å¾ï¼
Spring Boot 调用外部接口的 3 种方式,还有谁不会?!
深入理解Spring Boot调用外部接口的三种方式,满足您的需求。
Spring Boot,作为高效轻量级的框架,简化了Spring应用的开发过程,提供多种方式调用外部接口,适应不同场景。接下来,我们来探讨Spring Boot调用外部接口的三种主流方法。
方式一:原始HTTP客户端请求
Spring Boot 提供了`HttpClient`接口,允许开发者直接进行HTTP请求。通过`HttpClient`,您可以实现GET和POST请求,支持多种响应类型,灵活且直接。
Get请求支持多种调用方式,包括`getForEntity`和`getForObject`。`getForEntity`接受URI、响应类型和可选的URL变量作为参数,返回响应体和状态信息。而`getForObject`则进一步封装,直接返回转换后的对象。
Post请求则提供了`postForEntity`、`postForObject`和`postForLocation`等方法,支持不同的牛股 指标源码请求参数和响应处理。以`postForEntity`为例,它接受URI、响应类型和请求体作为参数,返回响应实体和状态信息。
方式二:使用`RestTemplate`
`RestTemplate`是Spring框架提供的核心工具类,专门用于处理RESTful API请求。它封装了HTTP请求的细节,简化了与Web服务的交互。`RestTemplate`提供了`getForObject`和`getForEntity`方法用于GET请求,以及`postForObject`、`postForEntity`等方法用于POST请求。
通过`RestTemplate`,您可以轻松地处理请求和响应,获取JSON、XML等数据格式,并自动进行序列化或反序列化操作。
方式三:使用`Feign`进行服务调用
Feign是Spring团队推出的高生产力的HTTP客户端,允许开发者以声明式的方式编写HTTP请求。在Spring Boot中,通过引入Feign依赖并配置@EnableFeignClients注解,您可以快速实现对外部服务的调用。
首先,在项目中添加Feign依赖。启动类上添加@EnableFeignClients注解,开启Feign支持。然后,定义服务接口、控制器和实现类,以Feign风格编写服务调用逻辑。Feign自动处理HTTP请求,flash游戏源码讲解简化了接口调用的编码。
为了确保Feign能够正确处理请求头、认证信息等,您可以自定义RequestInterceptor实现逻辑,如添加Token等信息到请求头中。同时,提供配置类定义Feign客户端的配置参数,如超时时间、重试策略等,以增强服务调用的健壮性。
总结,Spring Boot提供了原始HTTP客户端请求、`RestTemplate`和`Feign`三种方式调用外部接口,满足了不同场景下的需求。选择合适的方法,将有助于提高开发效率,确保应用的稳定性和可靠性。
神器 SpringDoc 横空出世!最适合 SpringBoot 的API文档工具来了
之前在SpringBoot项目中,我一直在使用SpringFox提供的Swagger库。然而,当我浏览其官网时,发现已经有将近两年没有出新版本了。最近,当我升级到SpringBoot 2.6.x版本时,发现这个库的兼容性也越来越差,有些常用注解属性甚至被废弃了,而库中并没有提供替代方案。偶然间,我发现了一款名为SpringDoc的Swagger库,试用后发现效果非常不错,因此推荐给大家。
SpringDoc是一款基于OpenAPI 3的API文档生成工具,可以与SpringBoot结合使用。在Github上,它已经获得了超过1.7K个Star,更新发布也相当频繁,可以说是一款比Swagger库更好用的工具。值得一提的是,SpringDoc不仅支持Spring WebMvc项目,还可以支持Spring WebFlux项目,甚至Spring Rest和Spring Native项目,功能非常强大。下面是一张SpringDoc的架构图。
接下来,我将介绍SpringDoc的使用方法。我将以之前集成SpringFox的mall-tiny-swagger项目为例,将其改造为使用SpringDoc。
首先,我们需要集成SpringDoc。在pom.xml中添加它的依赖即可,开箱即用,无需任何配置。
从SpringFox迁移结合SpringSecurity使用测试常用配置
SpringDoc还有一些常用的配置可以了解,更多配置可以参考官方文档。
总结
在SpringFox的Swagger库好久不出新版的情况下,迁移到SpringDoc确实是一个更好的选择。今天我体验了一把SpringDoc,确实很好用,与之前熟悉的用法相似,学习成本极低。而且SpringDoc能支持WebFlux之类的项目,功能也更加强大,对于使用SpringFox觉得有些卡手的朋友来说,迁移到SpringDoc是一个不错的选择!
参考资料项目源码地址:github.com/macrozheng/m...
来源:mp.weixin.qq.com/s/scit...
springdoc-openapi:帮助spring-boot自动生成API的开源库工具
springdoc-openapi 是一个用于 Java 的开源库工具,它能够帮助 Spring Boot 项目自动生成 API 文档。这一库通过运行时检查应用并根据 Spring 配置、类结构以及各种注释来推断 API 语义,进而自动生成 JSON/YAML 和 HTML 格式的文档。 借助 springdoc-openapi,开发者可以轻松地在生成的文档中添加补充信息,以提高 API 文档的丰富性和实用性。此库支持多种功能和特性,为 Spring Boot 开发者提供全面的 API 文档解决方案。 主要功能包括:自动生成 API 文档
支持 JSON/YAML 和 HTML 格式输出
通过补充 swagger-api 注释增强文档
springdoc-openapi 支持的版本包括:org.springdoc
springdoc-openapi-ui
开发者可通过利用这些库和版本,轻松地集成 springdoc-openapi 到其 Spring Boot 项目中,从而实现自动化的 API 文档生成,提升项目的可读性和易用性。2.创建SpringBoot项目
在完成上一章节的环境配置和lombok插件安装后,我们需要创建一个SpringBoot应用所需的父项目和三个子项目。
以下是创建过程的详细步骤。
1. 创建父项目:
打开IDEA,点击“New Project”快速创建一个Maven项目。
创建完成后,删除src源码目录,只保留pom.xml文件。
2. 创建demo-api:
demo-api层负责提供接口和参数,只需要提供jar包即可。使用Maven创建该项目。
在项目上右键,选择“New” > “Module”,快速创建Maven项目,确保选择父项目。
3. 创建demo-core:
demo-core主要与数据库进行交互,不启动服务,只提供jar包。同样选择Maven项目。
在项目上右键,选择“New” > “Module”,快速创建Maven项目,注意选择父项目。
4. 创建demo-service:
5. 结果:
最终生成的文件目录结构如下:
6. pom文件结构如下:
父pom.xml
api/pom.xml
core/pom.xml
service/pom.xml
springboot开源框架推荐,如若依,renrenfast,有从0搭建教程
前后端分离低代码快速开发框架 随着技术发展,前后端分离成为主流开发模式。此模式将前端与后端解耦,提高开发效率与维护性。若公司未切换此模式,建议学习以保持竞争优势。学习前后端分离需转变思路,避免沿用传统开发模式,导致产品不伦不类。本文章推荐以下开源框架,助您快速掌握前后端分离技术栈。 听名字就知道这是个不错的项目,事实上确实不赖。NiceFish(美人鱼)是一个系列项目,目标是示范前后端分离的开发模式:前端浏览器、移动端、Electron环境中的各种开发模式;后端有两个版本:SpringBoot版本和SpringCloud版本,前端有Angular、React以及Electron等版本。 微人事是一个前后端分离的人力资源管理系统,项目采用SpringBoot + Vue开发。项目打通前后端,并提供详尽文档,包括Spring Boot接口设计和前端Vue开发思路,是Java全栈学习资料。 bootshiro是基于Spring Boot + Shiro + JWT的真正RESTful URL资源无状态认证权限管理系统的后端,前端usthe。区别于一般项目,该项目提供页面可配置式的、动态的RESTful api安全管理支持,并实现数据传输动态秘钥加密、jwt过期刷新、用户操作监控等功能,加固应用安全。 JNPF快速开发平台,采用最新主流前后分离框架(SpringBoot + Mybatis-plus + Ant-Design + Vue3)。代码生成器依赖性低,提供灵活扩展能力,实现二次开发。以JNPF为代表的企业级低代码平台,支撑更高技术要求的应用开发,从数据库建模、Web API构建到页面设计,与传统开发模式无异,通过低代码可视化减少构建功能重复劳动。 open-capacity-platform微服务能力开放平台,简称ocp,基于layui + springcloud的企业级微服务框架(用户权限管理、配置中心管理、应用管理等)。其核心目标是分离前后端,快速开发部署,学习简单,功能强大,提供快速接入核心接口能力,帮助企业搭建类似百度能力开放平台的框架。 V部落是一个多用户博客管理平台,采用Vue + SpringBoot + ElementUI开发。项目优势在于简单,功能完整但简单,非常适合初学者。 悟空CRM基于jfinal + vue + ElementUI的前后端分离CRM系统。jfinal了解即可,Vue + ElementUI组合值得深入学习,前后端交互方式亦值得学习。 总结,以上开源项目提供丰富资源,助您在全栈开发路上更进一步。学习前后端分离技术,不仅提升个人技能,也能为企业带来高效与灵活性。推荐有空时学习这种开发方式,扩展知识面,提升技术能力。七个开源项目,助力您的全栈之旅。