1.querydslԴ?源码?
2.springbootåjspçåºå«ï¼
querydslԴ??
将已有项目的Maven编译迁移到Gradle编译,对于提升构建速度有着明显的源码潜力。本文将通过一个具体的源码项目实例,带你逐步完成迁移过程。源码该项目架构涵盖了Maven项目中常用的源码编译配置,我们将利用Gradle的源码横盘调整公式源码强大特性,实现从Maven到Gradle的源码平滑过渡。
首先,源码借助Gradle的源码内置功能,使用一键转换工具将Maven项目转换为Gradle项目。源码执行相关命令后,源码Gradle会自动为你生成根项目和子项目的源码build.gradle文件,以及必要的源码配置文件。尽管如此,源码自动生成的源码配置文件还需进一步调整以匹配原Maven项目的需求。
考虑到Gradle的Kotlin DSL在IDE集成和类型安全性方面具有优势,我将Groovy DSL转换为Kotlin DSL。opencv 2.4.8 源码转换过程相对简单,主要涉及语法调整,如替换单引号和补全括号等。对于复杂差异,Google搜索即可找到解决方案。
对于依赖版本管理,基于Spring Boot的项目离不开Spring Boot Bom。引入Spring Boot Bom可以简化依赖管理,秒杀活动源码减少版本冲突。在Maven中,通常通过将其作为父模块引入,但在Gradle中,更推荐直接将Bom作为依赖管理。此外,Spring Cloud组件的依赖版本也可通过引入对应的Bom文件来管理。
为解决父模块引入Bom后子模块未生效等问题,王者引擎源码推荐使用Gradle官方的BOM解决方案。通过配置enforcedPlatform引入Bom,确保所有子项目都能正确使用Bom中的版本信息。对于自定义版本需求,Spring Boot官方文档提供了相应的指引。
在Gradle中,实现Nexus私服依赖下载、发布模块、screen 源码安装打包可执行的Spring Boot FatJar等功能,类似于Maven中的配置。Spring Boot官方提供的插件,如maven-publish和org.springframework.boot,简化了这一过程。确保源文件正确打包为可执行jar,并可配置默认文件名。
迁移过程中,Kotlin和Java代码的混合编译,需引入相应的kotlin(jvm)插件。配置Kotlin插件以识别并编译src/main/java目录下的源代码。Spock单元测试、lombok编译和QueryDSL的使用分别通过引入相关插件和依赖得以实现。
为加速构建过程,启用Gradle的并行编译和缓存机制。创建gradle.properties文件,配置相关参数。对比Maven和Gradle的构建时间,了解迁移效果。实际测试显示,尽管初次构建时间稍长,但随着缓存机制的建立,后续构建速度明显提升。
总结整个迁移过程,尽管花费了两天时间,最终成功将项目迁移到了Gradle。当前的测试结果似乎并未显著提升构建速度,这可能是由于项目规模不大,以及个人对Gradle的熟悉程度问题。然而,考虑到Spring Boot官方已将构建切换至Gradle,并声称速度提升3~4倍,期待在未来随着项目规模扩大,能够更多地从Gradle构建中获益。
springbootåjspçåºå«ï¼
ssmåspringbootçåºå«æ¯ä»ä¹?
åçå¦ä¸ï¼
å¨å¼åä¸çåºå«è¿æ¯åå¨çï¼è½ç¶springbootç®åäºé ç½®ï¼ä½å¹¶ä¸ä»£è¡¨ä¸éè¦ç¼åé ç½®æ件ï¼è¿æ¯éè¦å¨èªå¸¦çapplication.ymlæ件ä¸å»ç¼åä¸äºå 容ï¼åªä¸è¿ç¼åçæ¹å¼åå¾ç®åäºï¼è½ç¶ç®åäºï¼ä½æ¯åSSMæ´åçæ¹å¼è¿æäºåºå«ã
å¨ä½¿ç¨SSMå¼åçæ¶åï¼å¤æ°ä¼éæ©Jspä½ä¸ºè§å¾ï¼ä½æ¯springbootä¸æ¨è使ç¨jspï¼ä¸»æ¨çæ¯thymeleafåfreemarkerç模æ¿å¼æï¼ä¹é æäºä½¿ç¨SSMå¼åå°springbootå¼åä¹éè¦ä¸å®çå¦ä¹ ææ¬ãä¸è¿å¦æææ¡äºSSMçè¯ï¼å¦ä¹ springbootä¹æ¯æ°´å°æ¸ æï¼å¼å¸¸çç®åã
ç¸å ³ä»ç»ï¼
æºç¹å®ç»ææ¯ä¸ç§åºå«äºä¼ ç»ç»æçæ°çä¸å¡æ¨¡åï¼å®ä½¿ç¨ç»æç»å°ååç»ææºå°ååæ¶æ¥æ è¯ä¸ä¸ªç»æä¼è¯ï¼èä¸æ¯åä¼ ç»çç»ææå¡é£æ ·åªä½¿ç¨ç»æç»å°åæ¥æ è¯ä¸ä¸ªç»æä¼è¯ã
SSMä¿çäºä¼ ç»PIM-SM模å¼ä¸ç主æºæ¾ç¤ºå å ¥ç»æç»çé«ææ§ï¼ä½æ¯è·³è¿äºPIM-SM模å¼ä¸çå ±äº«æ åRP(RendezvousPointï¼éåç¹)è§ç¨ãå¨ä¼ ç»PIM-SM模å¼ä¸ï¼å ±äº«æ åRPè§ç¨ä½¿ç¨(*ï¼G)ç»å¯¹æ¥è¡¨ç¤ºä¸ä¸ªç»æä¼è¯ï¼å ¶ä¸(G)表示ä¸ä¸ªç¹å®çIPç»æç»ï¼è(*)表示ååç»æç»Gçä»»ä½ä¸ä¸ªæºã
SSMç´æ¥å»ºç«ç±(Sï¼G)æ è¯çä¸ä¸ªç»ææçè·¯å¾æ (SPTï¼ShortestPathTree)ï¼å ¶ä¸(G)表示ä¸ä¸ªç¹å®çIPç»æç»å°åï¼è(S)表示ååç»æç»Gçç¹å®æºçIPå°åã
SSMçä¸ä¸ª(Sï¼G)对ä¹è¢«ç§°ä¸ºä¸ä¸ªé¢é(Channel)ï¼ä»¥åºåä¼ ç»PIM-SMç»æä¸çä»»ææºç»æç»ãç±äºASMæ¯æç¹å°å¤ç¹åå¤ç¹å°å¤ç¹ä¸¤ç§ç»æä¸å¡æ¨¡å¼ï¼å æ¤æºçåç°è¿ç¨æ¯ASMå¤ææ§çåå ã
ä¾å¦å¨PIM-SM模å¼ä¸ï¼ç¨æ·ç¹å»æµè§å¨ä¸çç»æå 容ï¼æ¥æ¶ç«¯è®¾å¤åªè¢«éç¥å°ç»æç»çå 容ï¼è没æ被éç¥å°ç»ææºçä¿¡æ¯ãèå¨SSM模å¼ä¸ï¼ç¨æ·ç«¯å°åæ¶æ¥æ¶å°ç»ææºåç»æç»ä¿¡æ¯ã
å æ¤ï¼SSMç¹å«éåäºç¹å°å¤ç¹çç»ææå¡ï¼ä¾å¦ç½ç»å¨±ä¹é¢éãç½ç»æ°é»é¢éãç½ç»ä½è²é¢éçä¸å¡ï¼ä½å¦æè¦æ±å¤ç¹å°å¤ç¹ç»ææå¡åéè¦ASM模å¼ã
第äºç« ï¼SpringBootä¸JSPé´ä¸å¯æè¿°çç§å¯
springbootå é¨å¯¹jspçæ¯æ并ä¸æ¯ç¹å«çæ³ï¼èspringbootæ¨èçè§å¾æ¯Thymeleafï¼å¯¹äºjavaå¼å人åæ¥è¯´è¿æ¯å¤§å¤æ°äººåå欢使ç¨jspï¼æ¥ä¸æ¥æ们æ¥è®²è§£ä¸springbootæ¯å¦ä½æ¯æjspçã
æ´åspringbootweb项ç®æ¯æjspä½ä¸ºè§å¾è¾åºã
æå®å°å¹´å¨å客æ´çåºæ¥äºSpringBootãApiBootãSpringCloudçæç« æ±æ»ãSpringBootåºç¡æç¨ä¸é¢ãï¼ãSpringCloudåºç¡æç¨ä¸é¢ãï¼ãApiBootç»ä»¶ä½¿ç¨ä¸é¢ã
æ们使ç¨IntelliJIDEAå·¥å ·æ¥æ建项ç®ï¼é¦å æ们éè¦å建ä¸ä¸ªspringboot项ç®ï¼å¦ä¸å¾1æ示.
ç¹å»Nextåè¾å ¥ä¸äºé¡¹ç®çåºæ¬åæ°ï¼å åï¼å·¥ç¨åï¼æå å½¢å¼ï¼mavenå½¢å¼æ建çï¼ï¼å¦ä¸å¾2æ示ï¼
ç¹å»Nextåéæ©æ们é¢å å å ¥å°å·¥ç¨çspringbootå ç½®çjarå ç»ä»¶ï¼æ们è¿ééæ©ä¸ä¸ªwebç»ä»¶ãå¦ä¸å¾3æ示ï¼
ç¹å»Nextè¾å ¥é¡¹ç®å称ååºå®¶Finishæ¢å¯ä»¥å®æäºé¡¹ç®çæ建ãæ°æ建ç项ç®ç®å½ç»æå¦ä¸å¾4æ示ï¼
å¯ä»¥çå°ä¸å¾ä¸æ¯æ们lessonOne项ç®ä¸å¤åºæ¥äºä¸ä¸ªç±»æ件,ServletInitlalizerï¼æå¼è¯¥ç±»æ们ä¸é¾åç°å®ç»§æ¿äºSpringBootServletInitializerè¿ä¸ªç¶ç±»ï¼èSpringBootServletInitializerè¿ä¸ªç±»æ¯springbootæä¾çwebç¨åºåå§åçå ¥å£ï¼å½æ们使ç¨å¤é¨å®¹å¨ï¼åææç« è®²è§£ä½¿ç¨å¤é¨tomcatå¦ä½è¿è¡é¡¹ç®ï¼è¿è¡é¡¹ç®æ¶ä¼èªå¨å 载并ä¸è£ é ã
å®ç°äºSpringBootServletInitializerçåç±»éè¦éåä¸ä¸ªconfigureæ¹æ³ï¼æ¹æ³å èªå¨æ ¹æ®LessontwoApplication.classçç±»åå建ä¸ä¸ªSpringApplicationBuilder交ä»ç»springbootæ¡æ¶æ¥å®æåå§åè¿è¡é ç½®ã
æ们æå¼pom.xmlï¼mavené ç½®æ件ï¼å¯ä»¥çå°æ们ä¹åæ建项ç®æ¶å·²ç»æ·»å äºweb模åï¼èspringbootç»æ们èªå¨æ·»å äºspring-boot-starter-tomcaté ç½®å¼å ¥ãspringbootå é¨éæäºtomcatç»ä»¶ï¼è¿éæ们就ä¸éè¦éå¤å¼å ¥tomcatç»ä»¶ã
æ们å æ¥æ·»å jspçmavenæ¯æï¼å¦ä¸å¾4æ示ï¼
æ们è¿éè¦å¼å ¥jsp对servlet容å¨çæ¯æ,å¦ä¸å¾5æ示ï¼
é¤äºä¸é¢çjsp,servletæ¯æ以å¤ï¼å¦æä½ è¿éè¦å¨jsp页é¢ä½¿ç¨jstlæ ç¾æ¥å¤ççé¢é»è¾ï¼é£ä¹éè¦å¼å ¥jstlmavenï¼å¦ä¸å¾6æ示ï¼
ä¸é¢é 置就æ¯æ们æ¬ç« éè¦çå ¨é¨é ç½®ï¼é£ä¹æ们å æ¥å°è¯è¿è¡ä¸é¡¹ç®æ¯å¦å·²ç»å¯ä»¥æ£å¸¸è¿è¡ãè¿é项ç®è¿è¡ä¹å¯ä»¥ä½¿ç¨IntelliJIDEAå·¥å ·æä¾çç»ä»¶æ¥å®æï¼å¦ä¸å¾7æ示,ï¼
ï¼æ³¨æï¼å¦æä½ å·²ç»å¼å¯äºå¦å¤ä¸ä¸ªspringboot项ç®è¯·å å ³éï¼å 为springbootå ç½®ç端å£å·é½æ¯è¿æ ·ä¼å¼èµ·å²çªï¼
ç¹å»ç»¿è²ä¸è§å·å³å¯å¼å§è¿è¡é¡¹ç®ï¼æ们å æ¥å°è¯ä¸ç¹å»åççæ§å¶å°è¾å ¥çæ¥å¿ä¿¡æ¯ãå¯ä»¥çå°é¡¹ç®å·²ç»æ£å¸¸è¿è¡äºï¼å³ä¸è§ç绿è²ä¸è§å·ä¹åæäºéå¯çæé®ï¼å¦ä¸å¾8æ示ï¼
项ç®è¿è¡å¦å¾9æ示ï¼
å¯ä»¥çå°é¡¹ç®å·²ç»æ£å¸¸è¿è¡ï¼ä½æ¯æ们ç°å¨è¿æ²¡æé ç½®ï¼å建JSPæ件ï¼æ们æ¥ä¸æ¥å¼å§é ç½®ï¼å建JSPã
å¦ææ¯ä½¿ç¨è¿eclipseå·¥å ·ç人è¯å®ç¥éjspæ件ä¹åæ¯å¨/webapp/WEB-INF/jspç®å½ä¸ï¼é£ä¹æ们ä¹æ²¿ç¨eclipseçé£æ ¼ã
1.å¨mainç®å½ä¸å建webappæ件夹
2.å¨webappä¸å建jspæ件夹å¦ä¸å¾æ示ï¼
3.ä¿®æ¹application.propertiesæ件让springmvcæ¯æè§å¾ç跳转ç®å½æå为/main/webapp/jspï¼é ç½®å¦ä¸å¾æ示ï¼
æ们å¨webapps/jspç®å½ä¸å建ä¸ä¸ªindex.jspç¨äºæµè¯æ们çé ç½®æ¯å¦å·²ç»æ¯æäºjspï¼æ°å»ºjspæ件å¦ä¸å¾æ示ï¼
ä¸é¢å·¥ä½æ们已ç»å®æäºjspçææé ç½®ï¼é£ä¹æ¥ä¸æ¥æ们éè¦é ç½®springmvcçæ§å¶å¨ï¼æ们æ°å»ºindexControllerå¦ä¸å¾æ示ï¼
å¯ä»¥çå°ä¸å¾æ们å¨IndexControlleré ç½®æ件å æ·»å äºindex()æ¹æ³é ç½®äº@RequestMapping注解æ¥æè¿°index()æ¹æ³æ¯ä¸ä¸ªå¯ä»¥è¢«springmvc管çç请æ±è§å¾ãæ们çindex()æ¹æ³è¿åå¼è¿éæ¯"index"ã
为ä»ä¹æ们è¿å"index"ï¼è¿è®°å¾ä¸è¿°æ¥éª¤ä¸é ç½®çapplication.propertiesæ件çspringmvc请æ±åç¼ä»¥ååç¼ï¼é£ä¹å½æ们访é®/indexæ¶springmvcå°±ä¼å»æ¾/webapp/WEB-INF/jsp/index.jspæ件ã
éå¯é¡¹ç®æ们å°è¯è®¿é®.0.0.1:/indexï¼å¯ä»¥çå°å¦ä¸å¾çææï¼è¯æå·²ç»å®æäºspringbootä¸jspçæ´åï¼
ä¸è¿°ä¾¿æ¯æ们æ¬ç« çå ¨é¨å 容ï¼æ¬ç« 主è¦æ¯è®²è§£äºspringbootéæjspä½ä¸ºæ¸²æè§å¾ï¼ç»åspringmvcæ¥è½¬å请æ±ã
æ¬ç« å 容已ç»ä¸ä¼ å°ç äºï¼
SpringBooté å¥æºç å°åï¼
SpringCloudé å¥æºç å°åï¼
SpringBootç¸å ³ç³»åæç« è¯·è®¿é®ï¼ç®å½ï¼SpringBootå¦ä¹ ç®å½
QueryDSLç¸å ³ç³»åæç« è¯·è®¿é®ï¼QueryDSLéç¨æ¥è¯¢æ¡æ¶å¦ä¹ ç®å½
SpringDataJPAç¸å ³ç³»åæç« è¯·è®¿é®ï¼ç®å½ï¼SpringDataJPAå¦ä¹ ç®å½
SpringBootç¸å ³æç« è¯·è®¿é®ï¼ç®å½ï¼SpringBootå¦ä¹ ç®å½ï¼æè°¢é 读ï¼
ç¥è¯æç-æå®å°å¹´
jspåspringbootåªä¸ªç®åspringbootç®åãspringbootååçå¦ä¹ ç®åãè½»é级以å容ææ©å±çä¼ç¹ï¼æ为äºè¬ååå±çå¿«éåºç¨å¼åé¢åçé¢å¯¼è ï¼å¯ä»¥æ¿ä»£jspæ¶æä¸çå½é åæ¯æå®è·µï¼å æ¤springbootç®åã