【課程免費分享】1-SpringBoot入門導讀

SpringBoot入門導讀

目前Spring與SpringBoot在Java項目中基本是標配了,極大簡化了開發的時間和難度。尤其是SpringBoot,各種框架整合SpringBoot都非常方便。在享受完方便的開發後,是時候來學習下背後的機制了。
對於框架的學習,學會使用只是入門的第一步,掌握其工作原理這纔是需要更加深入學習的,技術類框架都是大同小異的,只要掌握了一種框架,這樣即使再多類似的框架,也是非常容易上手使用的。

SpringBoot可以非常方便地集成各種框架,比如整合Web環境只需要導入對應的依賴配置

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

啓動SpringBoot項目只需要在對應的入口類中添加註解@SpringBootApplication()

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

這樣一個SpringBoot項目就啓動了,非常簡單,一行代碼就解決了。
當項目中需要獲取配置文件時,這時@ConfigurationProperties就派上用場了,只需要在對應的bean上添加@ConfigurationProperties並配置固定的前綴就可以將對應的屬性注入到bean中,比如:

@Component
@ConfigurationProperties(prefix = "myconfig")
public class MyConfig {
	private String name;
	private Integer age;
	private String desc;
    //get/set省略
    @Override
    public String toString() {
		return "MyConfig [name=" + name + ", age=" + age + ", desc=" + desc + "]";
	}
}

在配置文件中添加配置

myconfig.name=test
myconfig.age=22
myconfig.desc=這是我的測試描述

這樣項目啓動後,MyConfig對象就自動注入了對應的屬性值。測試代碼:

@SpringBootApplication()
public class Application {
	public static void main(String[] args) throws Exception {
		ConfigurableApplicationContext application = SpringApplication.run(Application.class, args);
		MyConfig config = application.getBean(MyConfig.class);
		System.out.println(config);
		application.close();
	}
}

輸出

MyConfig [name=test, age=22, desc=這是我的測試描述]

SpringBoot還提供了多種EnableXX註解,每種註解對應實現了不同的功能,使用時只需要在入口類中添加對應的註解就可以了,比如:

@EnableAspectJAutoProxy
@EnableConfigurationProperties
@EnableCaching
@EnableWebMvc

這樣就能非常輕鬆地整合cache,aspectj,mvc配置,屬性配置的功能。那麼大家是否想過這些註解是如何實現其對應的功能的?中間用到了什麼原理呢?爲什麼有的需要添加註解,有的直接引入依賴就可以運行了呢?
本次課程將以理論爲基礎,實踐並行的方式講解Spring與SpringBoot常用的功能原理。讓讀者更快更好更輕鬆的掌握其使用方法的同時掌握原理。

本次課程的內容將分爲以下幾個模塊,並以逐步深入地講解SpringBoot框架核心功能的執行機制:

  • 如何在Bean初始化回調前後進行自定義操作

本章將講解Bean初始化回調機制,什麼時候InitializingBean回調,什麼時候@PostConstruct會得到執行,如果不想使用註解或添加實現接口時,那麼該如何在bean初始化回調前後進行自定義操作。

  • @ConfigurationProperties實現原理與實戰

通過上一篇的引入,以實踐的方式解析@ConfigurationProperties工作機制和原理。掌握以後你會感覺其他註解都是套路般的實現。

  • Spring各種Aware注入的原理與實戰

講解Spring中提供的各種Aware接口工作原理與自定義Aware實戰

  • @EnableAutoConfiguration原理實戰

SpringBoot中所有的AutoConfiguration框架都需要依賴於@EnableAutoConfiguration
註解,如果沒有此註解,那麼SpringBoot將不再有那麼多的便利性,本文將從源碼的角度剖析@EnableAutoConfiguration工作原理,講解爲什麼有的框架需要添加對應的Enable註解,有的框架爲什麼只要引入對應的依賴就可以了。

  • Spring中Bean掃描實戰

在框架類型的項目中,對Bean的掃描是必不可少的,本文將從實踐的方式講解如何掃描出我們需要的Bean,如何對接口和抽象類進行掃描。如何脫離出Spring註解體系對bean進行掃描,爲下一篇文章實現自己的Enable*框架打下基礎。

  • Enable框架實現原理與自己實現Enable框架

通過《@EnableAutoConfiguration原理實戰》一文,掌握了@EnableAutoConfiguration的工作原理,以Mybatis整合源碼進行分析,對SpringBoot提供的各種Enable*框架進行細緻分析與自定義實現,以及學習到如何使用Spring的工廠bean與工廠bean的JDK動態代理方式實現和CGlib方式實現。

通過以上幾篇文章的學習,想必讀者應該已經掌握了SpringBoot常用註解的工作原理,將來在項目中需要對項目進行設計開發時,這些知識必然是會派上用場的。


之所以寫這一系列教程,主要是因爲在查看SpringBoot相關注解源碼時,我發現了非常多實用的類和實現方式,這些實現方式將會在我後續的項目中起到非常重要的作用,可以幫助我設計出更好的架構。而且覺得這些知識可以共享出來,爲需要學習的開發者提供一個導向,幫助他們更好的吸收SpringBoot與Spring框架。

在開發越來越簡便的今天,可以非常快速地入門一個新的框架,如果你只是停留在使用的角度上,那麼你相對於新手程序員有什麼優勢呢?同樣的使用方式,人家也會,這樣你的競爭力在哪裏?在和其他開發者或和項目經理解釋項目技術的時候,難道還是滿口代碼麼?而且作爲老員工,當你在給新手開發解說項目框架如何使用時,被一句“爲什麼這麼用?“就卡住了,是不是很尷尬。

同時作爲開發人員,提升自身實力的一個非常好的方式就是看源碼,在源碼中你能找到很多有用的實現和思路,可以學習到大牛架構師編碼和設計架構的方法。最重要的是各種框架的原理都是在源碼中體現的。當學某一個框架的時候,首先要了解它的原理,知道大概流程這對後續的開發和學習都是非常有幫助。知道原理後就需要繼續深入學習了,看源碼是掌握一個框架精髓的非常好的方式。而且類似框架的原理都是想通的,只要掌握了一種框架,其他類似的框架就是非常容易上手理解了。

任何語言和框架,學習時原理都是必須掌握的。只有掌握了其中原理才能說出個所以然出來,才能更好的解決和避免項目中各種坑。原理是非常重要的,這就是爲什麼面試時面試官爲什麼這麼喜歡問java底層原理和JVM實現原理了。

好了,不多說了,請細細品味接下來的每一篇文章吧

注:本課程中所有文章源碼都是基於SpringBoot 1.5.8.Release版本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章