1. 程式人生 > >SpringBoot 入門篇(二) SpringBoot常用註解以及自動配置

SpringBoot 入門篇(二) SpringBoot常用註解以及自動配置

一、SpringBoot常用註解

二、SpringBoot自動配置機制

一、SpringBoot常用註解

  在上一篇文章中https://blog.csdn.net/zhichao_qzc/article/details/80642111引用了官方文件的入門例子,這個例子中只是告訴我們如何去快速上手SpringBoot,我們實際開發中,肯定不會在一個類中把所有業務處理包圓,通常會劃分出Controller層、Service層、Dao層等。SpringBoot官方文件給出瞭如何去規劃我們的程式碼,並且如何正確使用它們。
  官方文件給出了一個常用的程式碼層次劃分結構圖

  官方文件推薦將包含main方法的類放到專案的根包下,並且使用@SpringBootApplication註解進行標註,該註解會將當前類所在路徑作為基準目錄,掃描基準目錄下所有類(包含子目錄中的類)。
  @SpringBootApplication是SpringBoot提供的一個常用註解,它包含了另外3個很常用的註解,分別是@EnableAutoConfiguration,@ComponentScan和@Configuration。

@SpringBootApplication // 等價於 @Configuration + @EnableAutoConfiguration + @ComponentScan
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

(1)@EnableAutoConfiguration是SpringBoot提供的一個註解,它的作用是啟動SpringBoot的自動配置機制;
(2)@ComponentScan是Spring框架提供的一個註解,它能掃描專案中所有的元件(@Component, @Service, @Repository, @Controller等進行標註的類)並將其註冊到Spring容器;
(3)@Configuration是Spring框架提供的一個註解,它能替代傳統的xml配置檔案,將Spring框架中的xml檔案以Java類的形式替代,去XML是SpringBoot的一個重要思想。
  在專案中我們可以將類同時標註@EnableAutoConfiguration、@ComponentScan和@Configuration,所起的作用和@SpringBootApplication是相同的,但需要注意的是,@EnableAutoConfiguration、@ComponentScan和@Configuration這3個註解並非是捆綁銷售,我們可以將他們任意組合。官方文件中給出瞭如下的一個例子

@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {

    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
    }

}

可以看到,程式碼中並沒有使用@ComponentScan註解,而是使用@Import註解來匯入元件並將其宣告成一個bean。當然,如果我們對XML檔案念念不忘,我們可以使用@ImportResource註解來匯入XML檔案,@Import和@ImportResource都是Spring框架提供的註解。

@Configuration
@EnableAutoConfiguration
@ImportResource(locations={"classpath:applicationContext.xml"})
public class Application {

    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
    }

}

二、SpringBoot自動配置機制

  SpringBoot總是嘗試根據我們的jar依賴,來為我們的專案進行一些自動配置以減輕開發者環境搭建的負擔,例如我們專案中依賴了spring-boot-starter-web,SpringBoot則會自動為我們進行web環境的配置(如新增內建Tomcat、配置SpringMVC等)。
  SpringBoot自動配置的幕前黑手就是上一節中提到的@EnableAutoConfiguration註解。SpringBoot自動配置是非入侵的,我們可以開啟我們自己的配置來替代自動配置,例如如果我們添加了自己的資料來源配置,則SpringBoot預設內建的資料庫服務則不會起作用。
  我們可以在啟動時加入 –debug 引數來檢視當前有那些自動配置,命令列直接執行java -jar *.jar –debug即可。如果想在IDEA中檢視,則首先進行如下配置

執行main方法即可看到當前有那些自動配置

如果我們不需要某些自動配置,可以通過@EnableAutoConfiguration註解的exclude或者excludeName屬性來指定不需要的自動配置,需要注意的是,當不需要的進行自動配置的類不在classpath下時,此時只能通過excludeName屬性指定類的全路徑名來排除不需要的自動配置。當然,還有一種辦法是在SpringBoot配置檔案中指定spring.autoconfigure.exclude,SpringBoot配置檔案一般是指classpath下預設的application.properties或者application.yml或者application.yaml,在這裡不做說明,後續的文章會進行詳細介紹。

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class Application {

    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
    }

}

相關推薦

SpringBoot 入門 SpringBoot常用註解以及自動配置

一、SpringBoot常用註解 二、SpringBoot自動配置機制 一、SpringBoot常用註解   在上一篇文章中https://blog.csdn.net/zhichao_qzc/article/details/806421

Springboot 入門

springboot是基於spring框架上的,可以輕鬆建立可用獨立執行的應用程式。springboot是對spring框架和第三庫的整合,這樣就能輕鬆上手了, 大多數springboot應用程式只需要很少的spring配置。可以使用springboot建立一個jar應用程

mybatis入門:Mybatis註解方式的基本用法

batis case left 返回 import Coding print pack hid @Select 1、mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCT

SpringBoot入門筆記IDEA下springboot專案spring+mybatis+sqlserver+log4j+簡單登入驗證攔截器的框架搭建

IDEA下springboot專案spring+mybatis+sqlserver+log4j+簡單登入驗證攔截器的框架搭建 先貼一個專案的目錄結構 Attention:templates.html5是templates目錄下新建了一個html5目錄 1.專案建立 這個簡單,選

SpringBoot整合 非同步呼叫Async

什麼是非同步呼叫? 非同步呼叫是相對於同步呼叫而言的,同步呼叫是指程式按預定順序一步步執行,每一步必須等到上一步執行完後才能執行,非同步呼叫則無需等待上一步程式執行完即可執行。 如何實現非同步呼叫? 多執行緒,這是很多人第一眼想到的關鍵詞,沒錯,多執行緒就是一種實現非同步

SpringBoot入門系列如何返回統一的資料格式

前面介紹了Spring Boot的優點,然後介紹瞭如何快速建立Spring Boot 專案。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天來說一說Spring的@Controller和@RestCo

springboot熱部署——springboot熱部署與發布

延遲 標簽頁 tools settings 通過 選擇 auto tex pid 一、實現的方式概述      註意以下的熱部署方式在IDEA是默認沒有打開自動編譯的,手動編譯需要快捷鍵(Ctrl+Shift+F9),自動編譯的修改配置如下:(註意刷新不要太快,會有1-

SpringBoot入門筆記SpringBoot專案打war包部署至伺服器

相對於傳統的Spring專案而言,SpringBoot官方推薦使用打jar包的形式,所以若是需要打war包需經過一些處理 1.修改pom.xml 首先要去除springboot內嵌的Tomcat服務,開發測試時記得註釋掉 原生Tomcat依賴移除 <dependency>

Linux入門

1.Linux控制檯使用 終端裝置:terminal 主要適用於多工,多使用者 螢幕和鍵盤只是一個終端,可能不夠用,又不想裝置投入,就產生了虛擬終端。 *在啟動裝置之後,在其上關聯一個使用者介面程式,能實現與使用者互動 控制檯一般分為4種: 物理終端:conso

SpringBoot學習筆記 SpringBoot專案建立的兩種方式

叄念 springboot 專案建立方式其實有多種,這裡我們主要介紹兩種方式: 當然這裡建議大家用方式一來建立,方式二用於理解 方式

SpringBoot學習-SpringBoot註解配置

SpringBoot註解 [email protected] 一般來說Spring Boot的Web應用都有一個xxxApplication類,並使用@SpringBootApplication註解標記,作為該web應用的載入入口。通過檢視@S

微信小程式入門

上篇我們講解了一下小程式的整體架構,今天來講一下,一個頁面的具體實現原理,好注意聽,下面要開始畫重點啦~哈哈 頁面的構成 還記得我們在上篇文章中講解如何加入一個介面嗎?在app.json中的pages加入要加的檔案路徑就可以啦,檔案路徑可以隨便起,系統

Ansible入門:SSH配置免密互信

Ansible是用來處理大批量重複性操作的工具,只需要在一臺機器上就可以遠端控制所有機器,但前提是必須保證每臺機器之間SSH可以相互免密登入。關於Ansible的安裝和環境準備請參考Ansible環境的準備。 注: 有關Ansible的所有操作只需在第一臺機器上修改和執行,其它機器只需知道I

C語言入門指標的介紹和運用

 一.記憶體   1.記憶體的含義:     記憶體是溝通CPU和硬碟的橋樑:        (1)暫存CPU中的運算資料       (2)暫存與外部儲存器交換的資料     物理儲存器:實際存在的具體儲存器晶片                主

SiteMesh入門之包含靜態HTML導致亂碼問題。

首先要了解SiteMesh機制,因為他是過濾器,會攔截你的請求根據自己的規則給你返回,所有如果你沒有設定編碼,SiteMesh將會用自己編碼,預設編碼是ISO8859-1。至於為什麼亂碼建議去看看孫鑫講過一章關於亂碼的問題。 在一個網上有很多講解關於如果決絕包含HTML會導

Android入門熟悉androidstudio開發軟體

本章將說明如何在專案中加入各種元件(文字框、按鈕、輸入欄位)、設計使用者介面的各種基本知識、示範使用簡單的方式編寫程式,建立具有互動效果的程式邏輯。 (一)Android App主要組成 Android App程式主要由4種類型組成: 1.Activity

碼雲gitee+git入門——程式碼託管

書接上回:碼雲gitee+git入門篇(一)——簡介、git安裝 繼對gitee和git的簡單介紹以及git安裝之後,這篇部落格主要介紹如何使用git命令,從而在碼雲上進行程式碼託管。 首先,參考碼雲平臺幫助文件先介紹一下git中的幾個重要概念:分支、提交、

Spring框架入門

spring IoC容器可以自動裝配(autowire)相互協作bean之間的關聯關係。因此,如果可能的話,可以自動讓Spring通過檢查BeanFactory中的內容,來替我們指定bean的協作者(其他被依賴的bean)。 簡而言之,就是對於bean當中引用的其他bean時不需要我們自己去配置它該使用哪個

Android 滑動效果入門—— Gallery

水平居中 developer ngs Coding android 能夠 source contex load Gallery 是Android官方提供的一個View容器類,繼承於AbsSpinner類,用於實現頁面滑動效果。 從上面的繼承關系可以看出,AbsSp

Springfox Swagger2常用註解

@ApiIgnore():用於類或者方法上,可以不被swagger顯示在頁面上 @Api():用於類表示標識這個類是swagger的資源     tags–表示說明 但是tags如果有多個值,會生成多個list    value–也是說明,可以使用tags替代 (實際沒有作用