1. 程式人生 > >使用Idea搭建SpringBoot入門專案

使用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這個註解的作用理解有誤。

該註解的作用再強調一遍,是訪問當前包及其同級包下面的類。

我把同級包錯誤的理解成了是這個執行類所在的包的同級包。

正確的理解是 這個執行類的當前所在包       和這個類的同級包,也就是這個類所在包的子包是這個類的同級包。原因出在這裡。

下面是正確的結構:

 

 

最後的最後,我想闡述一下我的觀點,我知道我的部落格目前寫的還是很差勁的,但是我在寫部落格的過程中發現了好多問題,對我自己的提升很大,加深了印象和理解,所以說寫部落格這種學習部落格我還是非常提倡的,僅以記錄自己學習點滴。望各位大佬勿噴哈。