从本篇文章开始,Debug将开始跟各位小伙伴分享一下跟Spring Boot开发相关的技术栈,其中主要包括如何搭建项目,整合前端开发实现完整的业务服务模块,整合中间件实战典型的业务场景等等,进一步巩固各位小伙伴的技术体系!
提起Spring Boot,想必各位小伙伴必不陌生,特别是在如今微服务、分布式系统架构时代,关于Spring Boot技术栈的介绍以及使用简直就是烂大街了!因此,关于Spring Boot入门级别的介绍就不赘述了,从本篇文章开始,Debug将长期不定期地分享关于Spring Boot开发相关的技术栈,特别是一些典型实际业务场景的开发。
当我们接手一个项目或者从网上Check相应的开源项目下来的时候,虽然可以从中抽取一些需要的功能模块为我们所用,但是久而久之会出现一种困惑“这个项目是怎么一步一步构建出来的呢?”“这个项目最开始的、最原始的容貌是咋样的呢?”我相信,大部分的小伙伴都是有过这种疑问的!
而本文正是分享介绍给大家如何去构建一个标准、企业级Spring Boot的项目初始骨架,即初始容貌!感兴趣的小伙伴可以继续往下Look!
即本文将主要介绍如何基于开发工具IDEA、项目构建工具Maven等搭建一个标准的、可用于企业级应用开发的Spring Boot项目(以Jar的方式)!而不再是构建一个简单的入门级别的HelloWorld的项目(如果需要的话,随便网上找一篇文章照着做即可,几个步骤而已!)
当然啦,在这里所指的所谓的“标准、可用于企业级应用开发的Spring Boot项目”其实是Debug我自己制定的,即所谓的Maven多模块、职责分明的构建原则,如下图所示:
![349f39e0340fa8f704ad6c39322fab7c.png](https://i-blog.csdnimg.cn/blog_migrate/057b3c554e7186a6aac7cf1ef0111a19.jpeg)
值得一提的是,在后面实战Spring Boot开发相关的技术栈时,将以此会构建的项目为奠基。好了,废话不多讲,下面就整个项目的构建环节!
(1)首先,当然是打开IDEA,然后点击New,新建一个项目,选择Maven插件,然后啥骨架都不要选,直接选择好SDK(即JDK),下一步即可,如下图所示:
![7b2af658ffd582961cf409868071ceae.png](https://i-blog.csdnimg.cn/blog_migrate/16af7688ca2f906a6feb69961070624c.jpeg)
(2)之后,便是输入构建Maven项目时需要的GroupId、ArtifactId以及Version信息了,这个看个人喜好了,按照要求输入即可。最后点击下一步,找个文件夹目录存储即可!
![a76747ec2d5fe7f888b9181704b425f9.png](https://i-blog.csdnimg.cn/blog_migrate/a6c15891d7459b0c06b33f1068546441.jpeg)
(3)接下来,便是在这个Project下新建三个module,分别是api、model、server,然后按照第一个图所示的,server模块依赖于model模块,model模块依赖于api模块,并各自在相应模块的pom.xml中加入一些必要的依赖。最终整体的构建如图所示:
![ffbf0ce7fc37ad6fff64f4f111215e1a.png](https://i-blog.csdnimg.cn/blog_migrate/6a8ac19c760bb14f1a27ac3112351674.jpeg)
(4)对于每个模块的职责,本文第一个图就已经说明,在此就不再赘述了,至于每个模块添加的依赖Jar,建议各位小伙伴在拿到我的这个“标准项目”的源码时直接复制过去即可!当然啦,如果有一些不需要的,你可以直接Delete掉!下面各个模块比较重要的一些依赖截图吧,首先是api模块的:
![c356cbdb3f97a315d711ecc9b44e27f6.png](https://i-blog.csdnimg.cn/blog_migrate/40bdc6207effc177ac96d6ad3f6d3c62.jpeg)
紧接着是model模块,如下图所示:
![25f436aeccd5bb116887a5985bf70815.png](https://i-blog.csdnimg.cn/blog_migrate/b9a24ed8c8165c645c918ecfb355ed7d.jpeg)
最后,是相当重要的server模块的依赖Jar明细,如下图所示:
![da1b2292638ebe9bb2fcb85bc489a6c6.png](https://i-blog.csdnimg.cn/blog_migrate/38aacaab74b06a3a193894f28bf3f4e5.jpeg)
(5)除此之外,还需要为Spring Boot项目准备一个Main类,用以充当该项目的启动入口类,当然,在这里需要注意的是,该入口类需要置于前面设定的 GroupId 的子包目录下,比如我的是 com.debug.springboot.server 包目录下,其源代码如下所示:
@SpringBootApplication@ImportResource(value = {"classpath:spring/spring-jdbc.xml"})@MapperScan(basePackages = "com.debug.springboot.model.mapper")@EnableSchedulingpublic class MainApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MainApplication.class); } public static void main(String[] args) { SpringApplication.run(MainApplication.class,args); }}
(6)当然啦,除了有启动类之外,在这里我们还需要额外的几个配置文件,一个是用于加载数据源配置的spring-jdbc.xml,一个是加载整个项目所需的配置文件application.properties,其他的则是一些辅助的配置文件,比如mybatis的mybatis-config.xml以及日志的log4j.properties。如下图所示:
![1eb490800dbdf7277c82a32571bd6e17.png](https://i-blog.csdnimg.cn/blog_migrate/ac1362ee7375f1667f1adeeb02b845e3.jpeg)
另外,也重点贴出项目配置文件application.properties的配置内容,相应的配置项可能有些小伙伴是不需要的(比如中间件的配置,在这里我只是为了以后使用方便,不需要再配置一次),那么可以考虑去掉,如下所示:
#profile多环境配置 - 默认即为本配置文件#spring.profiles.active=prod#spring.profiles.active=test#应用端口-应用上下文路径server.port=8081server.servlet.context-path=/technology#日志logging.path=E:logsechnologylogslogging.file=technology#前端模板引擎spring.freemarker.cache=falsespring.freemarker.charset=UTF-8spring.freemarker.suffix=.htmlspring.freemarker.request-context-attribute=requestspring.freemarker.template-loader-path=classpath:/templates#限定前端上传的文件大小spring.servlet.multipart.max-request-size=20Mbspring.servlet.multipart.max-file-size=2Mb#日志级别logging.level.org.springframework = INFOlogging.level.com.fasterxml.jackson = INFOlogging.level.com.debug.springboot = DEBUG#json序列化配置spring.jackson.date-format=yyyy-MM-dd HH:mm:ssspring.jackson.time-zone=GMT+8spring.datasource.initialization-mode=neverspring.jmx.enabled=false#数据源配置datasource.url=jdbc:mysql://127.0.0.1:3306/technology?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNulldatasource.username=rootdatasource.password=linsen#mybatismybatis.config-location=classpath:mybatis-config.xmlmybatis.checkConfigLocation = truemybatis.mapper-locations=classpath:mappers/*.xml#缓存中间件redisspring.redis.host=127.0.0.1spring.redis.port=6379spring.redis.password=redis.config.host=redis://127.0.0.1:6379#分布式服务调度中间件dubbo+服务协调中间件zookeeperdubbo.registry.address=zookeeper://127.0.0.1:2181#消息中间件rabbitmqspring.rabbitmq.virtual-host=/spring.rabbitmq.host=127.0.0.1spring.rabbitmq.port=5672spring.rabbitmq.username=guestspring.rabbitmq.password=guestspring.rabbitmq.listener.simple.concurrency=5spring.rabbitmq.listener.simple.max-concurrency=15spring.rabbitmq.listener.simple.prefetch=10#通用配置server.tomcat.additional-tld-skip-patterns=jaxb-api.jar,jaxb-core.jar
(8)当然啦,你可以打开Navicat 新建一个名叫 technology 的数据库,然后就完成了整个标准型项目的构建了!此时,你可以点击MainApplication的启动按钮,然后将其跑起来,下图为成功运行起来后Console打印出来的日志:
![72a5069b985abfb494234603d6904522.png](https://i-blog.csdnimg.cn/blog_migrate/95801b1b53d1cfc1fdfcb9e3caeb1026.jpeg)
至此,一个标准化的、可扩展用于企业级开发的Spring Boot项目就搭建完成了,下一步我们基于此分享介绍如何构建统一的前后端接口交互信息响应模型。
敲黑板!!!
1、对于这个标准的Spring Boot项目,Debug将会永远保留着,目的在于:任何时候如果需要构建一个项目了,那就可以直接从此项目开始!而不让其掺杂过多的东西!!!
2、关注公众号,回复“标准项目”,即可获取该源码的下载地址!