SpringBoot系列(一):如何構(gòu)建一個標準的Spring Boot項目(入門必備)


作者: 修羅debug
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 by-sa 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。


摘要:從本篇文章開始,Debug將開始跟各位小伙伴分享一下跟Spring Boot開發(fā)相關(guān)的技術(shù)棧,其中主要包括如何搭建項目,整合前端開發(fā)實現(xiàn)完整的業(yè)務(wù)服務(wù)模塊,整合中間件實戰(zhàn)典型的業(yè)務(wù)場景等等,進一步鞏固各位小伙伴的技術(shù)體系!

內(nèi)容:提起Spring Boot,想必各位小伙伴必不陌生,特別是在如今微服務(wù)、分布式系統(tǒng)架構(gòu)時代,關(guān)于Spring Boot技術(shù)棧的介紹以及使用簡直就是爛大街了!因此,關(guān)于Spring Boot入門級別的介紹就不贅述了,從本篇文章開始,Debug將長期不定期地分享關(guān)于Spring Boot開發(fā)相關(guān)的技術(shù)棧,特別是一些典型實際業(yè)務(wù)場景的開發(fā)。

當我們接手一個項目或者從網(wǎng)上Check相應的開源項目下來的時候,雖然可以從中抽取一些需要的功能模塊為我們所用,但是久而久之會出現(xiàn)一種困惑“這個項目是怎么一步一步構(gòu)建出來的呢?”、“這個項目最開始的、最原始的容貌是咋樣的呢?”,我相信,大部分的小伙伴都是有過這種疑問的!

而本文正是分享介紹給大家如何去構(gòu)建一個標準、企業(yè)級Spring Boot的項目初始骨架,即初始容貌!感興趣的小伙伴可以繼續(xù)往下Look!

即本文將主要介紹如何基于開發(fā)工具IDEA、項目構(gòu)建工具Maven等搭建一個標準的、可用于企業(yè)級應用開發(fā)的Spring Boot項目(以Jar的方式)!而不再是構(gòu)建一個簡單的入門級別的HelloWorld的項目(如果需要的話,隨便網(wǎng)上找一篇文章照著做即可,幾個步驟而已?。?/span>

當然啦,在這里所指的所謂的“標準、可用于企業(yè)級應用開發(fā)的Spring Boot項目”其實是Debug我自己制定的,即所謂的Maven多模塊、職責分明的構(gòu)建原則,如下圖所示:


值得一提的是,在后面實戰(zhàn)Spring Boot開發(fā)相關(guān)的技術(shù)棧時,將以此會構(gòu)建的項目為奠基。好了,廢話不多講,下面就整個項目的構(gòu)建環(huán)節(jié)!

(1)首先,當然是打開IDEA,然后點擊New,新建一個項目,選擇Maven插件,然后啥骨架都不要選,直接選擇好SDK(即JDK),下一步即可,如下圖所示:


  (2)之后,便是輸入構(gòu)建Maven項目時需要的GroupId、ArtifactId以及Version信息了,這個看個人喜好了,按照要求輸入即可。最后點擊下一步,找個文件夾目錄存儲即可!  


(3)接下來,便是在這個Project下新建三個module,分別是api、model、server,然后按照第一個圖所示的,server模塊依賴于model模塊,model模塊依賴于api模塊,并各自在相應模塊的pom.xml中加入一些必要的依賴。最終整體的構(gòu)建如圖所示:


(4)對于每個模塊的職責,本文第一個圖就已經(jīng)說明,在此就不再贅述了,至于每個模塊添加的依賴Jar,建議各位小伙伴在拿到我的這個“標準項目”的源碼時直接復制過去即可!當然啦,如果有一些不需要的,你可以直接Delete掉!下面各個模塊比較重要的一些依賴截圖吧,首先是api模塊的:


緊接著是model模塊,如下圖所示:


最后,是相當重要的server模塊的依賴Jar明細,如下圖所示:


(5)除此之外,還需要為Spring Boot項目準備一個Main類,用以充當該項目的啟動入口類,當然,在這里需要注意的是,該入口類需要置于前面設(shè)定的 GroupId 的子包目錄下,比如我的是 com.debug.springboot.server 包目錄下,其源代碼如下所示:

@SpringBootApplication
@ImportResource(value = {"classpath:spring/spring-jdbc.xml"})
@MapperScan(basePackages = "com.debug.springboot.model.mapper")
@EnableScheduling
public 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)當然啦,除了有啟動類之外,在這里我們還需要額外的幾個配置文件,一個是用于加載數(shù)據(jù)源配置的spring-jdbc.xml,一個是加載整個項目所需的配置文件application.properties,其他的則是一些輔助的配置文件,比如mybatis的mybatis-config.xml以及日志的log4j.properties。如下圖所示:


另外,也重點貼出項目配置文件application.properties的配置內(nèi)容,相應的配置項可能有些小伙伴是不需要的(比如中間件的配置,在這里我只是為了以后使用方便,不需要再配置一次),那么可以考慮去掉,如下所示:

#profile多環(huán)境配置 - 默認即為本配置文件
#spring.profiles.active=prod
#spring.profiles.active=test

#應用端口-應用上下文路徑
server.port=8081
server.servlet.context-path=/technology

#日志
logging.path=E:\\logs\\technology\\logs
logging.file=technology

#前端模板引擎
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.suffix=.html
spring.freemarker.request-context-attribute=request
spring.freemarker.template-loader-path=classpath:/templates
#限定前端上傳的文件大小
spring.servlet.multipart.max-request-size=20Mb
spring.servlet.multipart.max-file-size=2Mb

#日志級別
logging.level.org.springframework = INFO
logging.level.com.fasterxml.jackson = INFO
logging.level.com.debug.springboot = DEBUG

#json序列化配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

spring.datasource.initialization-mode=never
spring.jmx.enabled=false

#數(shù)據(jù)源配置
datasource.url=jdbc:mysql://127.0.0.1:3306/technology?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
datasource.username=root
datasource.password=linsen

#mybatis
mybatis.config-location=classpath:mybatis-config.xml
mybatis.checkConfigLocation = true
mybatis.mapper-locations=classpath:mappers/*.xml

#緩存中間件redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
redis.config.host=redis://127.0.0.1:6379

#分布式服務(wù)調(diào)度中間件dubbo+服務(wù)協(xié)調(diào)中間件zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181

#消息中間件rabbitmq
spring.rabbitmq.virtual-host=/
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

spring.rabbitmq.listener.simple.concurrency=5
spring.rabbitmq.listener.simple.max-concurrency=15
spring.rabbitmq.listener.simple.prefetch=10

#通用配置
server.tomcat.additional-tld-skip-patterns=jaxb-api.jar,jaxb-core.jar

(8)當然啦,你可以打開Navicat 新建一個名叫 technology 的數(shù)據(jù)庫,然后就完成了整個標準型項目的構(gòu)建了!此時,你可以點擊MainApplication的啟動按鈕,然后將其跑起來,下圖為成功運行起來后Console打印出來的日志:


至此,一個標準化的、可擴展用于企業(yè)級開發(fā)的Spring Boot項目就搭建完成了,下一步我們基于此分享介紹如何構(gòu)建統(tǒng)一的前后端接口交互信息響應模型。

補充:

1、對于這個標準的Spring Boot項目,Debug將會永遠保留著,目的在于:任何時候如果需要構(gòu)建一個項目了,那就可以直接從此項目開始!而不讓其摻雜過多的東西?。?!

2、關(guān)注公眾號,回復“標準項目”,即可獲取該源碼的下載地址!