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

一、SpringBoot常用注解

二、SpringBoot自動配置機制

SpringBoot版本:1.5.13.RELEASE
對應官方文檔鏈接:https://docs.spring.io/spring-boot/docs/1.5.13.RELEASE/reference/htmlsingle/

上一篇:SpringBoot 入門篇(一) Hello World


一、SpringBoot常用注解

??在上一篇文章中引用了官方文檔的入門例子,這個例子中只是告訴我們如何去快速上手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 入門篇(一) Hello World
下一篇:SpringBoot 入門篇(三) SpringApplication

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,951評論 6 342
  • 前言:學習SpringBoot不應該直接就是開始使用SpringBoot,如果直接拿來用肯定會有很多人不是很明白特...
    CoderZS閱讀 74,856評論 10 217
  • 入門 介紹 Spring Boot Spring Boot 使您可以輕松地創建獨立的、生產級的基于 Spring ...
    Hsinwong閱讀 16,953評論 2 89
  • springboot 概述 SpringBoot能夠快速開發,簡化部署,適用于微服務 參考嘟嘟大神SpringBo...
    一紙硯白閱讀 5,497評論 2 20