1. 程式人生 > >SpringBoot的啟動方式——SpringBoot(二)

SpringBoot的啟動方式——SpringBoot(二)

目錄

@RestController註解

一、 啟動方式一

@EnableAutoConfiguration註解

二、 啟動方式二

@SpringbootApplication註解

三、 啟動方式三

@ComponentScan註解

四、 總結


@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的。