截止到本文编辑和发布的时间(即2020年07月)SpringBoot系列的版本号已经到达2.3.1了。基于SpringBoot本身的理念和特点,导致旗下几乎所有关联的组件的版本号几乎都保持一致地到达了2.3.1。
从SpringBoot首次发布之后,网络上便到处可见各类有关其的教程和文章,甚至还有不少专题,其标题无不夺人眼球。仔细看这些洋洋洒洒的著作,无不写得细致入微——从原理解说到手绘配图。
站在SpringBoot的巨人肩膀之上,Web应用开发进入了一个新的时代。随之而来的是很多新事物的兴起。这其中就引出了本文的其中一个撰写目的:老树开新花。
观察大部分Spring有关的学习类文章,大多是站在最新的开发工具IDE——Idea intellij。不可否认这是一个更为先进、高雅,同时给人以现代感的开发工具。年轻一代程序员们无不对其趋之若鹜。
但是作为一个已经一半被行业淘汰了的老程序员,自己仍然在坚守着那个更为“古老”的开发环境:MyEclipse。并不是因为什么其他的原因,仅仅只是因为工作的原因,接触了不少企业级的客户。在这些客户当中,不乏有众多仍然运行于早期SpringMVC架构下的项目。笼罩在“互联网”光环下的全新的Web开发体系对这些老项目其实表现得并不那么友好,这也导致了很多参与在这些项目中的开发人员面对新技术时所产生的矛盾的心情——一方面大家都在追捧的新鲜玩意儿,老程序员们也希望能够接触一点,但另一方面,这就意味着自己可能需要新旧两头兼顾,并且对旧有系统的更新换代也显得代价过于高昂——我们无法对老板或是雇主说:需要把旧有的,已经正常运行了十数年的系统完全推翻重做。
事实上,随便一个企业级的系统,动辄上百万的开发成本,半年甚至一年以上的开发周期,还要考虑与旧有系统的双线运行、老数据的备份与导入、大量的报表重制、还有业务部门工作人员的使用习惯等,当然了,还包括许多非技术的原因在内,例如人事之间的相互制衡和权力纷争,这些是作为程序员的技术人员大都很难想象的。
因此,借着一些企业级项目改造的机会,我简单整理了这一系列的文章。作为一个“实用主义”者的坚定拥趸,我仍然坚持“不为了用而用,一切点到为止,够用就行了”的原则。
如果你是一个“上古”的老程序员,正在寻找类似的解决方案,那么请留步关注,我们一起坐下来,聊一聊奔着四十岁去的程序员人生,聊一聊边写代码边带孩子的人生经验,可能地话再喝一杯美式。
如果你是一个激情洋溢的新生代程序员,早已熟悉了互联网环境下的开发过程,那么请移步离开。这个古旧的“盒子”表面布满了灰尘和霉点,并不值得你去打开。
操作系统:Ubuntu 18.04
Java版本:JDK 1.8
开发工具:MyEclipse
中间件:Tomcat 9.x
我想尽可能地使用更为轻松的语言,那么,我们开始吧。
我曾试着在网上搜索“Eclipse 如何搭建SpringBoot”,或者类似的关键字。大部分的文章会告诉我们,我们只需创建一个“maven项目”,并且引入相关的pom依赖,就能够完成SpringBoot项目的搭建。
我并不觉得这是一个好的开始。事实上,有相当多古旧的企业级Web系统,其源代码工程并不是构筑在“maven项目”上的。其中更多的项目可能是构建在“Java EE Web Project”基础之上的,甚至可能更为古老,是一个典型的Servlet/JSP项目:
如此一来,我们就要从这个地方开始了。
假设我们已经拥有一个Java EE Web 项目了,它已经在现有的生产环境中稳定地运行了很久,而我们的手上有它的一份源代码工程:
它甚至还保留有一份令人怀念的web.xml文件:
事实上,对于向我这样奔着四十岁去的老程序员来说,web.xml文件更多的时候意味着“安心”。因为我知道在那里面我仍然保佑对项目施加更多扩展的可能性。但现在它并不会妨碍我们。
好了,这是一个非常干净而纯粹的Servlet Web项目。干净到它什么都没有。年轻的程序员们可能已经没有多少人会编写JSP甚至是Servlet了;他们也不会喜欢手动地去网络上收集自己的项目所要用到的资源包,并手动地将他们复制到WEB-INF/lib目录下。这实在是太过于古老和低效了。
好吧,可能有相当一部分“老程序员”们早已习惯了使用Maven来作为资源管理工具。但至少在今天,让我们仍然从头做起。毕竟这个被命名为“TheElder”的项目——如你所见——过于纯粹了。
我们首先要为它添加Maven依赖环境,让它能够先转变为一个可以使用Maven的项目。但首先,我们需要确认一下自己所用到的Maven环境。
尽管MyEclipse已经自带有相应的Maven工具,但是我仍然怀疑这个原始的工具可能在哪里存在着一些问题。所以我们打开Maven官网,重新下载最新的Maven工具:
Maven官方网站:http://maven.apache.org/index.html
Ummm....阿帕奇的网站一如既往地这么....简约.....
在Maven官方网站上,有相当显眼的“Download”链接,通过它我们能够进入到下载页面:
选择合适的镜像地址,然后我们就能从这个页面上下载Maven工具了。对于Ubuntu/Linux来说,tar.gz和zip文件其实并没有太大的区别:
将下载到的压缩包解压,放置在一个合适的目录下,保证自己能记得住这个目录的路径即可:
我们还需要再额外准备一个空的目录,作为各种.jar文件的资源库——它将成为我们本地环境中的Maven资源仓库:
在这个目录下,我们需要新建一个xml文件,把它命名为“settings.xml”,然后打开它,在其中添加以下的内容:
/home/freezingxu/jobs/MavenRepository
repo1
central
repo1.maven.org/maven2
https://repo1.maven.org/maven2/
repo2
central
repo2.maven.org/maven2
https://repo2.maven.org/maven2/
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
jdk1.8
true
1.8
UTF-8
1.8
1.8
1.8
Snapshots
Maven Snapshots
http://snapshots.maven.codehaus.org/maven2/
true
false
Maven Snapshots
http://snapshots.maven.codehaus.org/maven2/
true
false
Snapshots
在上述的文件“settings.xml”中,有几处需要特别注意的地方:
标签:该标签里的内容就是当前settings.xml文件所在的位置,即本地Maven仓库所在的目录位置。
标签:该标签下有多组子标签,每一个都指向一个备用的Maven中央仓库的网络地址。
好了,接下来回到MyEclipse中,打开“Window”菜单项,选择“Preferences”选项,在打开属性面板中,选择左侧的“Maven”选项下的“Installations”子选项,在右侧添加一个新的Maven目录,就是之前我们下载保存的Maven所在的目录:
然后,继续点击左侧“Maven”菜单项下的“User Settings”子项,在打开的面板中,选择先前编辑过的“settings.xml”文件:
至此,开发环境中的Maven环境已经准备完毕了。接下来我们就能够为传统的Web Project添加Maven支持了。在项目工程的名称上,点击鼠标右键,选择“Maven”选项,向右展开子菜单,选择“Enable Denpendency Management”:
在弹出的窗口中,我们唯一需要注意的是,可以将“Packaging”一项选择为“war”。尽管Spring Boot支持将整个项目工程编译完成后,连同一个它自带的Tomcat一起打包成为一个jar文件,但这对我们今天所面对的老旧系统来说太不友善了。所以我们仍然选择传统的“war”打包方式——但这一点在之后其实可以任意修改:
完成这一步以后,在项目工程的根目录下,就多了一个“pom.xml”文件了。它将帮助我们以Maven的方式来构筑项目中所要用到的所有.jar资源文件:
打开这个文件,目前里面什么都还没有:
4.0.0
TheElder
TheElder
0.0.1-SNAPSHOT
war
值得注意的是,在
好了,现在,我们可以试着通过Maven来添加依赖包了。有两种方式:
方式一:在项目名称或者pom.xml文件上,右键点击鼠标,选择“Add Dependency”:
然后在弹出的对话框中,搜索自己想要添加的jar包的名称即可:
方式二:如果你刚刚建立自己的本地Maven资源库,这个资源库中还什么都没有,那么你可以直接编辑pom.xml文件,在其中添加所需的jar包的依赖描述。例如,我们可以先访问Maven中央仓库:
Maven中央仓库:https://mvnrepository.com
在中央仓库的搜索栏中,搜索自己想要找的资源:
在搜索结果中,选择自己所需要的资源,进入到该资源的详情页面,在详情页面上,选择自己所需的版本号:
在版本号的明细页面中,复制页面上所出现的pom资源描述:
把这段描述,粘帖在自己项目工程的pom.xml文件中。需要注意的是,标签
4.0.0
TheElder
TheElder
0.0.1-SNAPSHOT
war
org.springframework.boot
spring-boot-starter
2.3.1.RELEASE
如果添加成功,我们会在自己的源代码工程中看到多了一个Maven资源库,并且展开之后能够看到自己所添加的所有的jar资源:
不要惊讶,尽管我们只在pom.xml文件中添加了一个依赖“org.springframework.boot”,但却在Maven Dependencies中看到了如此多的jar包。这是因为依赖“org.springframework.boot”又自动将它的依赖也一并添加了进来。
如果你真的是第一次使用Maven的话,我建议您可以打开自己的Maven本地资源库目录,你将看到你在pom.xml文件中所引用的依赖全部被下载了下来。
好了,第一步就先到这儿~~我需要去喝一杯美式...