從最初的單體架構,到現在的微服務架構,Spring Boot 都發揮著超大的作用,它簡潔快速開發的魅力,值得推廣到公司的任何專案中。目前,Spring Boot 擁有超棒的特性和它整合許多的優秀技術!
SpringBoot框架中還有兩個非常重要的策略:開箱即用和約定優於設定。
SpringBoot 是簡化 Spring 應用開發的一個框架。他整合了 Spring 的技術棧,提供各種標準化的預設設定。使得我們可以快速開發 Spring 專案,免掉 xml 設定的麻煩。降低 Spring 專案的成本。
這個挺多的,我們就幾個重要的。
高優先順序的會覆蓋低優先順序的。
命令列上的引數設定是優先順序最高的。
jar 包外的帶 profile 的組態檔。
jar 包內的帶 profile 的組態檔。
jar 包外的不帶 profile 的組態檔。
jar 包內的不帶 profile 的組態檔。
通過建立自己的類繼承 WebMvcConfigurerAdapter ,在類上面打上註解 @Configuration 。然後重寫裡面的方法即可。容器中的所有的 WebMvcConfigurer 會一起起作用。
如果我們不想使用 mvc 的自動設定,全部使用自己的。可以在設定類上增加註解 @EnableWebMvc 。這個註解可以匯入一個 webmvcconfigurationsupport 的類。然後 mvc 的自動設定類上的註解有這麼一句話,有一個條件註解,當沒有上面那個類的時候,才生效。
筆者整理了最新各路知識點合集包含有:JVM、MySQL、MyBatis、Dubbo、Liunx、TomCat等多種知識點,如果各位有需要的話歡迎加入我們的討論群1149778920來一起交流學習領取資料 暗號:qf
Spring IoC 的實現機制
Spring 中的 IoC 的實現原理就是工廠模式加反射機制。
interface Fruit {
public abstract void eat();
}
class Apple implements Fruit {
public void eat(){
System.out.println("Apple");
}
}
class Orange implements Fruit {
public void eat(){
System.out.println("Orange");
}
}
class Factory {
public static Fruit getInstance(String ClassName) {
Fruit f=null;
try {
f=(Fruit)Class.forName(ClassName).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return f;
}
}
class Client {
public static void main(String[] a) {
Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");
if(f!=null){
f.eat();
}
}
}
BeanFactory和ApplicationContext是Spring的兩大核心介面,都可以當做Spring的容器。其中ApplicationContext是BeanFactory的子介面。
依賴關係
ApplicationContext介面作為BeanFactory的派生,除了提供BeanFactory所具有的功能外,還提供了更完整的框架功能:
-繼承MessageSource,因此支援國際化。
載入方式
BeanFactroy採用的是延遲載入形式來注入Bean的,即只有在使用到某個Bean時(呼叫getBean()),才對該Bean進行載入範例化。這樣,我們就不能發現一些存在的Spring的設定問題。如果Bean的某一個屬性沒有注入,BeanFacotry載入後,直至第一次使用呼叫getBean方法才會丟擲異常。
ApplicationContext,它是在容器啟動時,一次性建立了所有的Bean。這樣,在容器啟動時,我們就可以發現Spring中存在的設定錯誤,這樣有利於檢查所依賴屬性是否注入。 ApplicationContext啟動後預載入所有的單範例Bean,通過預載入單範例bean ,確保當你需要的時候,你就不用等待,因為它們已經建立好了。
相對於基本的BeanFactory,ApplicationContext 唯一的不足是佔用記憶體空間。當應用程式設定Bean較多時,程式啟動較慢。
建立方式
BeanFactory通常以程式設計的方式被建立,ApplicationContext還能以宣告的方式建立,如使用ContextLoader。
註冊方式
BeanFactory和ApplicationContext都支援BeanPostProcessor、BeanFactoryPostProcessor的使用,但兩者之間的區別是:BeanFactory需要手動註冊,而ApplicationContext則是自動註冊。
SpringBoot 整合 redis
引入 redis 的啟動器。 data-redis 。引入後再組態檔進行設定 redis 的 host 。然後通過 redistemplate 就可以進行操作了。會亂碼,預設使用的是 jdk 的序列化 json 器。需要改成 jackson 。自己實現一個 RedisTmeplate 。泛型為 object , object 。再實現 CacheManager 。就會發現快取變成 json 形式了。
筆者在這裡給各位整合最新的真實大廠面試題,有需要的小夥伴可以加群:1149778920 暗號:qf
來自行領取