從最初的單體架構,到現在的微服務架構,Spring Boot 都發揮著超大的作用,它簡潔快速開發的魅力,值得推廣到公司的任何專案中,目前,Spring Boot 擁有超棒的特性和它集成許多的優秀技術!
SpringBoot框架中還有兩個非常重要的策略:開箱即用和約定優于配置,
SpringBoot 是簡化 Spring 應用開發的一個框架,他整合了 Spring 的技術堆疊,提供各種標準化的默認配置,使得我們可以快速開發 Spring 專案,免掉 xml 配置的麻煩,降低 Spring 專案的成本,
一、SpringBoot 外部組態檔加載順序
這個挺多的,我們就幾個重要的,
-
高優先級的會覆寫低優先級的,
-
命令列上的引數配置是優先級最高的,
-
jar 包外的帶 profile 的組態檔,
-
jar 包內的帶 profile 的組態檔,
-
jar 包外的不帶 profile 的組態檔,
-
jar 包內的不帶 profile 的組態檔,
二、SpringBoot 如何擴展 SpringMVC 的配置
通過建立自己的類繼承 WebMvcConfigurerAdapter ,在類上面打上注解 @Configuration ,然后重寫里面的方法即可,容器中的所有的 WebMvcConfigurer 會一起起作用,

如果我們不想使用 mvc 的自動配置,全部使用自己的,可以在配置類上增加注解 @EnableWebMvc ,這個注解可以匯入一個 webmvcconfigurationsupport 的類,然后 mvc 的自動配置類上的注解有這么一句話,有一個條件注解,當沒有上面那個類的時候,才生效,
筆者整理了最新各路知識點合集包含有:JVM、MySQL、MyBatis、Dubbo、Liunx、TomCat等多種知識點,如果各位有需要的話歡迎加入我們的討論群1149778920來一起交流學習領取資料 暗號:qf

三、Spring控制反轉(IOC)
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有什么區別?
BeanFactory和ApplicationContext是Spring的兩大核心介面,都可以當做Spring的容器,其中ApplicationContext是BeanFactory的子介面,
依賴關系
- BeanFactory:是Spring里面最底層的介面,包含了各種Bean的定義,讀取bean配置檔案,管理bean的加載、實體化,控制bean的生命周期,維護bean之間的依賴關系,
ApplicationContext介面作為BeanFactory的派生,除了提供BeanFactory所具有的功能外,還提供了更完整的框架功能:
-繼承MessageSource,因此支持國際化,
- 統一的資源檔案訪問方式,
- 提供在監聽器中注冊bean的事件,
- 同時加載多個組態檔,
載入多個(有繼承關系)背景關系 ,使得每一個背景關系都專注于一個特定的層次,比如應用的web層,
加載方式
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
來自行領取

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/190240.html
標籤:其他
上一篇:換零鈔[藍橋杯2018決賽]
