SpringBoot之核心依賴和自動(dòng)配置方式
之前介紹了springboot是有多么的好,那么,我們現(xiàn)在通過(guò)一個(gè)小demo來(lái)看他是有多么的強(qiáng)大!
一、核心pom引入
我們可以知道一般的項(xiàng)目引入了的基本包和spring一些連接池,再加上幾個(gè)配置文件還有應(yīng)用服務(wù)器(或者web服務(wù)器),就可以直接運(yùn)行起來(lái)了。
那么springboot要如何做呢?
首先就是核心依賴了:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent>
這個(gè)parent是springboot最最核心的引入,所有的配置都在里面,并且是springboot項(xiàng)目必須引入的。
當(dāng)然現(xiàn)在都是web項(xiàng)目居多,我們還需要引入一個(gè)需要的依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
然后可以的話還可以引入一個(gè)插件:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
引入這些東西之后,我們可以在一個(gè)包中新建一個(gè)類,然后寫入以下代碼:
@Controller @SpringBootApplication @Configuration public class HelloApplication { @RequestMapping("hello") @ResponseBody public String hello(){ return "hello world!"; } public static void main(String[] args) { SpringApplication.run(HelloApplication.class, args); } }
之后直接用javaApplication 的run方式,我們就可以直接將springboot的這個(gè)項(xiàng)目run起來(lái),可以在控制臺(tái)看到:
然后我們?cè)跒g覽器中輸入:http://localhost:8080/hello
就可以看到如下頁(yè)面:
這樣,我們就啟動(dòng)了一個(gè)簡(jiǎn)單的springboot項(xiàng)目。
二、核心自動(dòng)配置
我們可以在項(xiàng)目中看到,其實(shí)我們就是寫了一個(gè)類,為什么連tomcat都不用,就可以直接啟動(dòng)一個(gè)web程序呢?這一切都是從springboot的配置說(shuō)起。
還記得我們引入pom了一個(gè)spring-boot-starter-web了么,這個(gè)就是spring所依賴的web項(xiàng)目模板,我們可以在maven管理器的依賴中找到這些已經(jīng)默認(rèn)加載好的東西:
我們可以直觀的看到,tomcat,hibernate,還有一些web項(xiàng)目需要用的東西全部都引入到了項(xiàng)目中,在項(xiàng)目啟動(dòng)的時(shí)候就是調(diào)用的他們,然后我們就相當(dāng)于吧tomcat也啟動(dòng)了一樣的感覺(jué),為我們的開(kāi)發(fā)配置省了不少事情。
然后我們?cè)賮?lái)看我們寫的這個(gè)類,為什么可以直接用web來(lái)啟動(dòng)呢,根據(jù)上一篇文章的介紹,java的配置方式起到了很強(qiáng)的作用,那就是我們可以利用注解去輕易的配置一些我們想要配置的東西,springboot就是利用了這一點(diǎn)。
我們可以看到我們的類上面除了java的@Configuration之外,還有一個(gè)是springboot的配置項(xiàng)@SpringBootApplication,這個(gè)注解的引入,就默認(rèn)為我們自動(dòng)的配置了一些常用的配置。
那么,它都自動(dòng)為我們配置了什么呢?我們可以找到library的jar包引入,找到一個(gè)springboot的autoconfigure來(lái)看一下:
我們展開(kāi)看一下會(huì)發(fā)現(xiàn)很多熟悉的東西:
是不是看到了很多熟悉的身影呢,我們可以在每個(gè)包下面都找到一個(gè)帶有AutoConfigure的類,這就是用java配置方式寫的默認(rèn)配置:
當(dāng)然,這些都是默認(rèn)的配置,我們?nèi)绻胍约号渲靡粋€(gè)組件要怎么把默認(rèn)的配置取消呢?
其實(shí)很簡(jiǎn)單,因?yàn)槊總€(gè)springboot項(xiàng)目都必須有一個(gè)核心的帶有@SpringBootApplication注解的類作為入口,所以我們只需要在這個(gè)注解上消除這個(gè)配置類的引入就可以了,
例如:
@Controller @SpringBootApplication(exclude = {MongoAutoConfiguration.class, KafkaAutoConfiguration.class}) @Configuration public class HelloApplication { @RequestMapping("hello") @ResponseBody public String hello(){ return "hello world!"; } public static void main(String[] args) { SpringApplication.run(HelloApplication.class, args); } }
通過(guò)這樣用exclude的方式就把mongo和kafka的自動(dòng)配置去掉了,我們就可以自己進(jìn)行配置了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 將springboot項(xiàng)目生成可依賴的jar并引入到項(xiàng)目中的方法
- SpringBoot依賴和代碼分開(kāi)打包的實(shí)現(xiàn)步驟
- Spring?boot數(shù)據(jù)庫(kù)依賴詳解
- Springboot中依賴注入的三種方式詳解
- Spring?Boot?打包如何將依賴全部打進(jìn)去
- SpringBoot中修改依賴版本的方法
- Springboot pom項(xiàng)目間接依賴包版本與預(yù)期不符原因解決分析
- SpringBoot中的依賴管理詳解
- spring boot idea maven依賴找不到問(wèn)題處理方法
- SpringBoot將所有依賴(包括本地jar包)打包到項(xiàng)目
- SpringBoot結(jié)合Maven項(xiàng)目依賴版本沖突問(wèn)題解決
- IDEA創(chuàng)建springboot依賴下載很慢的解決方法
相關(guān)文章
解決SpringMVC Controller 接收頁(yè)面?zhèn)鬟f的中文參數(shù)出現(xiàn)亂碼的問(wèn)題
下面小編就為大家分享一篇解決SpringMVC Controller 接收頁(yè)面?zhèn)鬟f的中文參數(shù)出現(xiàn)亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例)
這篇文章主要介紹了java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Mybatis如何實(shí)現(xiàn)InsertOrUpdate功能
這篇文章主要介紹了Mybatis如何實(shí)現(xiàn)InsertOrUpdate功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05淺談SpringCloud的微服務(wù)架構(gòu)組件
這篇文章主要介紹了淺談SpringCloud的微服務(wù)架構(gòu)組件,Spring Cloud根據(jù)分布式服務(wù)協(xié)調(diào)治理的需求成立了許多子項(xiàng)目,每個(gè)項(xiàng)目通過(guò)特定的組件去實(shí)現(xiàn),需要的朋友可以參考下2023-04-04Spring實(shí)現(xiàn)加法計(jì)算器和用戶登錄功能
在前后端分離的Web開(kāi)發(fā)模式中,接口(API)扮演著至關(guān)重要的角色,它是前后端交互的橋梁,創(chuàng)建加法計(jì)算器和用戶登錄功能時(shí),介紹了接口測(cè)試和問(wèn)題解決的一般流程,如使用Postman測(cè)試接口、查看日志、處理緩存問(wèn)題等,確保開(kāi)發(fā)過(guò)程中的高效協(xié)作和問(wèn)題快速定位2024-10-10淺談Java多線程編程中Boolean常量的同步問(wèn)題
這篇文章主要介紹了淺談Java多線程編程中Boolean常量的同步問(wèn)題,主要針對(duì)線程之間同步了不同的布爾對(duì)象的問(wèn)題,需要的朋友可以參考下2015-10-10java-RGB調(diào)色面板的實(shí)現(xiàn)(事件監(jiān)聽(tīng)器之匿名內(nèi)部類)
這篇文章主要介紹了java-RGB調(diào)色面板的實(shí)現(xiàn)(事件監(jiān)聽(tīng)器之匿名內(nèi)部類),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11深入淺析drools中Fact的equality?modes
這篇文章主要介紹了drools中Fact的equality?modes的相關(guān)知識(shí),本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05