SpringBoot的啟動方式——SpringBoot(二)
目錄
@RestController註解
1、 @RestController註解表示該類中的所有方法都會返回json格式(當在寫微服務的介面的時候會提供很大的幫助)。
2、 @RestController不是SpringBoot提供的而是SpringMVC。(SpingBoot是依賴於SpringMVC註解方式啟動)
3、 @RestController與@Controller的區別
如果不用@RestController,而使用@Controller可以嗎?
這是可以的,但是需要使用@ResponseBody註解來獲取json格式,其實@[email protected][email protected]。
一、 啟動方式一
@EnableAutoConfiguration註解
作用:定義掃描的路徑從中找出標識了需要裝配的類自動裝配到spring的bean容器中,說白了就叫掃包(預設在當前類裡面)。
spring通常建議把main方法所在的類放到一個根目錄的包下,@EnableAutoConfiguration(開啟自動配置)註解通常都放到main所在類的上面,在我們新建的SpringBoot的專案裡面都有這麼一個啟動類:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@EnableAutoConfiguration會在下面這個典型的目錄結構逐層搜尋加了註解的類,然後呼叫這些註解。
二、 啟動方式二
@SpringbootApplication註解
@SpringbootApplication的出現是為了解決在src/main/java這個目錄下的類有過多註解的問題。但在專案的效能方面存在一定問題。
一個@SpringbootApplication相當於@Configuration
,@EnableAutoConfiguration
和@ComponentScan並具有他們的預設屬性值。
三、 啟動方式三
@ComponentScan註解
作用:掃包。
需要加上掃包範圍(儘量縮小範圍,大了會影響整個專案的效能),如果是在當前包裡面掃。
如果我要下面這兩個包的話。
@ComponentScan(basePackages = {"package com.app01.app01","package com.app01.app01.controler;"})
如果掃包比較多的話,寫起來是非常麻煩的。還是建議@EnableAutoConfiguration註解方式。
四、 總結
@SpringBootApplication等於@EnableAutoConfiguration + @ComponentScanto 同級包和當前包。
舉個栗子吧~
在App01Application.java裡面用@ComponentScan是不能掃到userController.java的。