使用Idea搭建SpringBoot入門專案
由於工作需要,開始學習springboot。想通過部落格記錄下來學習中的點滴。
第一次寫部落格,如有紕漏錯誤,歡迎各位大佬批評指正,感謝。
1.開啟idea,新建一個專案
2.選擇Spring Initializer,點選next
(注意:idea自帶springboot外掛,如果你的idea沒有找到,那麼需要開啟一下)開啟如下:
打鉤開啟即可。
3.第二步點選next之後,填寫專案資訊
4.設定完畢,點選next,選擇專案使用的技術,把web新增上。
5.點選next,填寫專案名稱,完畢點選finish。
6.建立成功,專案結構如下
啟動類和測試類 idea 已經自動為我們建立好了,我們暫時先不要管這些。我們自己動手執行一個springboot專案
首先建立一個Controller
在這順便說一下,這兩個註解的作用。
@RestController :讓該類下的所有方法返回的資料都是以json格式.
該註解的作用等同於 在類上新增@Controller註解,同時在方法上新增@ResponseBody註解,如圖所示。
區別就是如果採用第二種,需要類中每個方法都增加@ResponseBody註解。
@RequestMapping:配置對映的路徑
如圖所示配置的話,訪問路徑為:127.0.0.1:8080/hello
然後我們在該類中手寫一個SpringBoot啟動的入口:
我第一次執行的時候失敗了,報錯內容如下
檢查一番之後,發現,之前為了著重解釋@RestController註解,忘記了加springboot最重要的一個註解了
@EnableAutoConfiguration 該註解可以簡單理解為自動配置,掃包的範圍預設是在當前類。也就是說,只有這個類裡面的方法配置的對映路徑才能訪問到。
自動載入SpringBoot內建的tomcat配置並建立。
加上該註解,就可以執行成功並訪問了。
但是這種方法是不符合規範的,一個專案的入口方法怎麼能隨便就放在一個Controller類裡面呢,這樣不能實現複用的。
所以我們把這個main方法提出來,單獨建立一個執行類。目錄如下
此時,我們要向訪問到Controller類裡方法的對映該怎麼做呢?這就涉及到另外一個註解
@ComponentScan():該註解的作用是掃描包下的類,可以是一個包,也可以是多個包
執行此類,一樣也可以訪問到Controller包下面的類的方法。
注意:如果是按順序敲的話,執行這個類的時候,一定要注意把先前執行起來的那個關掉哦。不然會報錯
還有,在@ComponentScan()這個註解裡面填寫包的路徑的時候,一定要填的準確一點,不要直接填寫一個最外層的包,
雖然該註解可以掃描包及子包。但是這樣做非常不好。一來掃描了過多無用的包影響了效能,二來怕引發不必要的衝突。
那麼有沒有更好的方式來實現呢?當然是有的啦,接下在再介紹一個新的註解
@SpringBootApplication註解:該註解的作用是掃描當前包以及同級包。
我們再新建一個包 Controller2 在裡面再寫一個類,來測試一下。
把專案執行類的@ComponentScan註解 註釋掉,增加@SpringBootApplication註解,執行,訪問一下Controller包下的類的方法和Controller2包下的類的方法
按照我的這種目錄結構,我本以為能成功。但是執行專案之後,發現兩個包裡的類都訪問不到。
另外百思不得其解~~
後來求助了以為大佬,才發現我對@SpringBootApplication這個註解的作用理解有誤。
該註解的作用再強調一遍,是訪問當前包及其同級包下面的類。
我把同級包錯誤的理解成了是這個執行類所在的包的同級包。
正確的理解是 這個執行類的當前所在包 和這個類的同級包,也就是這個類所在包的子包是這個類的同級包。原因出在這裡。
下面是正確的結構:
最後的最後,我想闡述一下我的觀點,我知道我的部落格目前寫的還是很差勁的,但是我在寫部落格的過程中發現了好多問題,對我自己的提升很大,加深了印象和理解,所以說寫部落格這種學習部落格我還是非常提倡的,僅以記錄自己學習點滴。望各位大佬勿噴哈。