首页 > 其他分享 >SpringBoot脚手架使用

SpringBoot脚手架使用

时间:2024-02-08 11:22:18浏览次数:28  
标签:SpringBoot spring 创建 https 使用 脚手架 com cola

介绍

脚手架可以帮助我们快速创建SpringBoot项目。

Spring提供的脚手架

页面地址,核心为 https://github.com/spring-io/initializr 这个项目,https://github.com/spring-io/start.spring.io 这个项目在此基础上提供了一些额外配置,并提供了前端页面。

内部是通过 https://start.spring.io/metadata/client 此接口来获取页面要展示的信息,如可选的依赖、版本等。

阿里云提供的脚手架

页面,这个是阿里云提供的一个脚手架,源码地址为 https://github.com/alibaba/cloud-native-app-initializer,内部依赖 https://github.com/spring-io/initializr 的很多模块,在此基础上提供了一些额外功能,如可以选择应用结构(MVC架构,分层架构)。如果我们想提供自己的定制化功能,就可以参考此项目。

使用命令行创建阿里云的cola架构代码

最开始阿里云脚手架也提供了 cola 架构的选项,后来页面上去掉了,我们还可以使用命令的方式来创建 cola 架构代码。

mvn archetype:generate    -DgroupId=com.imooc  -DartifactId=wechat-pay  -Dversion=1.0.0-SNAPSHOT    -Dpackage=com.imooc.wechat  -DarchetypeArtifactId=cola-framework-archetype-web  -DarchetypeGroupId=com.alibaba.cola  -DarchetypeVersion=4.3.1

修改为自己项目的groupId,artifactId,package

注意,windows下不要使用PowerShell,会报错,要使用命令提示符(Cmd),默认使用的是C:\Users\xxx\.m2 目录下的settings.xml配置文件,如果我们没有配置阿里云仓库镜像,可能会很慢。

 The goal you specified requires a project to execute but there is no POM in this directory (C:\Users\xxx). Please verify you invoked Maven from the correct directory. -> [Help 1]

原理解析

以自己的项目为例,https://gitee.com/strongmore/springboot-generator,在本地运行,java版本必须为17及以上,但是本机的IDEA版本为2019.3,不支持java17,所以这里我们将代码中的新特性适配为低版本代码(java11),之后就可以正常运行了。

获取元数据接口流程

  1. InitializerMetadataConfigure获取yml配置文件中的各种元数据信息并封装到InitializerProperties类中
  2. InitializerMetadataConfigure配置类根据InitializerProperties创建DefaultInitializrMetadataProvider
  3. InitializerProjectMetadataController使用InitializerMetadataV21JsonMapper(JSON转换器)将DefaultInitializrMetadataProvider中的元数据返回给前端

创建模板代码zip包接口流程

  1. CodeGenerationProtocolFilter过滤以zip,tar,tra.gz,git等结尾的请求,这里我们以zip为例
  2. 进入BootstrapProjectGenerator的generate()方法
  3. 进入InitializerProjectGenerationInvoker的invokeProjectStructureGeneration()方法
  4. 继续InitializerProjectGenerator的generate()方法,其中会调用InitializerProjectGenerationInvoker的generateProject()方法创建的生成器中
  5. 会在当前电脑系统的临时目录创建一个文件夹 C:\Users\${user}\AppData\Local\Temp\project-6844619005582396801\demo
  6. 主要通过多个ProjectContributor类来创建项目目录及源代码文件,如MainSourceCodeProjectContributor来生成main目录及源代码文件。
  7. 根据生成的临时目录创建zip压缩包,读取为字节数组,并通过ProjectGenerationController类的springZip()方法的来返回到前端
  8. 通过HttpEntityMethodProcessor处理ProjectGenerationController类的springZip()方法的返回值信息将字节数组返回到前端

如何控制是maven或gradle项目

通过ArchedMavenProjectGenerationConfiguration和ArchedGradleProjectGenerationConfiguration控制,使用到了@ConditionalOnBuildSystem注解,它会使用ProjectDescription中的BuildSystem字段来判断使用哪一种,ProjectDescription是在InitializerProjectGenerator的generate()方法时注入到Spring容器中的。

gradle类型

  • MainSourceCodeProjectContributor,
  • TestSourceCodeProjectContributor,
  • SettingsGradleProjectContributor,
  • GradleWrapperContributor,
  • GradleBuildProjectContributor,
  • SampleCodeContributor,
  • HelpDocumentProjectContributor,
  • GitIgnoreContributor

maven类型

  • MainSourceCodeProjectContributor,
  • TestSourceCodeProjectContributor,
  • MulitModuleMavenBuildProjectContributor
  • SampleCodeContributor,
  • HelpDocumentProjectContributor,
  • GitIgnoreContributor

参考

COLA-github

标签:SpringBoot,spring,创建,https,使用,脚手架,com,cola
From: https://www.cnblogs.com/strongmore/p/17131269.html

相关文章

  • 使用 Kestrel 自托管https 并作为 Windows 服务启动 Blazor 提示: 无法配置 HTTPS 端
    原文链接https://stackoverflow.com/questions/53300480/unable-to-configure-https-endpoint-no-server-certificate-was-specified-and-the/71026252#71026252使用Kestrel自托管并作为Windows服务启动Blazor提示UnabletoconfigureHTTPSendpoint.Noservercertifi......
  • 在vue中使用amis
    之前在使用amis时,是通过百度给的一个完整amis示例来用的,没有结合到自己的vue项目中,传送门:低代码平台amis学习本次简单介绍下,如何在vue中引入ami1、首先要在vue项目中引入amis的sdk引入方式有2种:(1)使用cdn方式  (2)下载sdk文件-本地引用(1)使用cdn方式,直接引用远程资源打......
  • 使用iptables拒绝某IP连接本机
    背景在开发工作中,经常遇到需要验证网络策略相关问题。例如是否具有自动重连机制,需要将网络策略先断开,然后放开看服务是否正常运行。在linux系统中可以使用iptables来实现该效果。使用路由规则查看当前系统路由规则iptables-L添加禁止ip访问策略,例如访问ip:192.168.1.......
  • Vue中使用Echarts
    第一步:安装echarts模块cnpminstallecharts-S第二步:在main.js中全局引入importechartsfrom'echarts'Vue.prototype.$echarts=echarts//全局引入后面用this.$echarts就能直接使用了使用方式:template中<template><el-cardclass="box-card"style=&quo......
  • 使用RSS+n8n同步博客园文章到cubox
    使用RSS+n8n同步博客文章到CuboxCuboxCubox是一款碎片知识文章收集的应用n8n低代码的workFlow整合大致流程定时触发器->获取RSS列表->迭代->文章是否已经同步->同步文章到cubox->同步记录写到数据库->结束这是一个大概的流程,当然也可以实现同步到其他地方的流程......
  • 使用pyhon实现 2的N次方列表
    pyhon代码defprint_powers_of_two(N):foriinrange(1,N+1):result=2**iprint(f"2的{i}次方={result}")N=int(input("请输入一个整数N:"))print_powers_of_two(N)32次方请输入一个整数N:322的1次方=22的2次方=42的3次方=82的4次方=......
  • 使用GitHub进行协作开发的综合介绍
    简介:GitHub是一个基于云端的代码托管平台,它提供了版本控制、协作开发和代码管理等功能。本文将介绍为什么选择GitHub,如何使用GitHub以及一些常见的坑,同时提供C#语言的具体操作步骤和代码示例。为什么选择GitHub?广泛的开源社区支持:GitHub是全球最大的开源社区之一,拥有庞大的用户......
  • 图片延迟加载插件lazyload使用
    图片懒加载,又称图片延时加载、惰性加载,即在用户需要使用图片的时候才加载。这种技术的主要好处包括:优化页面加载速度:在页面被请求时,只加载可视区域的图片,其它部分的图片则不加载,只有当这些图片出现在可视区域时才会动态加载。这样可以减少首次加载时需要加载的内容量,显著提高页面加......
  • element UI vue脚手架 接入cdn
    vue.config.jsmodule.exports={configureWebpack:{externals:{'element-ui':'ELEMENT',vue:'Vue'}}//externals配置来告诉Webpack不要打包它。 index.html<!DOCTYPEhtml><htmllang="en&qu......
  • 使用经典技术的音乐网站
    项目地址技术栈后端SpringBoot+MyBatis+Redis前端Vue3.0+TypeScript+Vue-Router+Vuex+Axios+ElementPlus+Echarts简介是一个经典简单的音乐网站。后端基本也就是在CRUD,redis是当缓存用的,数据库用的是mysql.XML自定义(附加)mybatis-plus的mapper配置mapper......