微服務架構——Spring Boot——知識點講解


說明:本文主要講解Spring Boot的一些常用的配置的作用及其原理

一、依賴管理

  • 依賴管理
    Spring Boot每次發佈時都會提供一個它所支持的精選依賴列表。實際上,在構建配置裏你不需要提供任何依賴的版本,因爲Spring Boot已經替你管理好了。當更新Spring Boot時,那些依賴也會一起更新。
  • maven依賴默認配置
    Maven用戶可以從spring-boot-starter-parent項目中繼承以獲得合理的默認值。父項目提供以下功能:
    Java 1.8作爲默認的編譯器級別。
    UTF-8源碼編碼。
    允許你省略常見依賴的version標籤,相關的版本繼承自Spring Boot提前設置好的版本。
  • 修改maven依賴默認配置
    可以通過dependencyManagement來管理依賴列表
  • Starters
    Starters是一個依賴描述符的集合,你可以將它包含進項目中,這樣添加依賴就非常方便。你可以獲取所有Spring及相關技術的一站式服務,而不需要翻閱示例代碼,拷貝粘貼大量的依賴描述符。例如,如果你想使用Spring和JPA進行數據庫訪問,只需要在項目中包含spring-boot-starter-data-jpa依賴,然後你就可以開始了。

二、main類

  • main類放在目錄頂層:
    main 類放在頂層,隱式地定義了一個基礎的包掃描路徑,從頂層向下掃描一些註解、配置等,若不放在頂層,還需額外配置scanBasePackages屬性來掃描指定路徑。
  • main類常用註解:
    @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan。
    1、@Configuration:提到@Configuration就要提到他的搭檔@Bean。使用這兩個註解就可以創建一個簡單的spring配置類,可以用來替代相應的xml配置文件。
    @Configuration的註解類標識這個類可以使用Spring IoC容器作爲bean定義的來源。@Bean註解告訴Spring,一個帶有@Bean的註解方法將返回一個對象,該對象應該被註冊爲在Spring應用程序上下文中的bean。
    2、@EnableAutoConfiguration:能夠自動配置spring的上下文,試圖猜測和配置你想要的bean類,通常會自動根據你的類路徑和你的bean定義自動配置。
    3、@ComponentScan:會自動掃描指定包下的全部標有@Component的類,並註冊成bean,當然包括@Component下的子註解@Service,@Repository,@Controller。

三、配置類

  • 主配置類:
    @EnableAutoConfiguration應該放到主配置類中,我們通常將main類作爲主配置類,主配置類有且僅有一個,需要配合@Configuration一起使用
  • 自動配置:
    自動配置可以關閉,你可以使@EnableAutoConfiguration 註解的exclude屬性禁用它們
    自定義配置會覆蓋掉自動配置

四、Spring Beans和依賴注入

  • 支持spring註解:
    你可以自由地使用任何標準的Spring框架技術去定義beans和它們注入的依賴。簡單起見,我們經常使用@ComponentScan註解搜索beans,並結合@Autowired構造器注入。
    如果遵循以上的建議組織代碼結構(將應用的main類放到包的最上層,即root package),那麼你就可以添加@ComponentScan註解而不需要任何參數,所有應用組件(@Component, @Service, @Repository, @Controller等)都會自動註冊成Spring Beans。

五、Devtools 開發工具

  • 自動重啓:只要classpath下的文件有變動,它就會自動重啓
  • 排除資源:
    某些資源的變化沒必要觸發重啓,比如Thymeleaf模板可以隨時編輯。默認情況下,位於/META-INF/maven,/META-INF/resources,/resources,/static,/public或/templates下的資源變更不會觸發重啓,但會觸發實時加載(live reload)你可以使用spring.devtools.restart.exclude屬性自定義這些排除規則

六、日誌系統

  • SpringBoot底層日誌系統:
    底層是使用slf4j(抽象)+logback(實現)的方式進行日誌記錄的

  • 自定義日誌配置:
    使用logback-spring.xml而不是logback.xml,你不能在標準的logback.xml配置文件中使用擴展,因爲它加載的太早了,Spring可能不能夠完全控制日誌初始化。

  • SpringBoot默認適配所有日誌系統,如果引入的其他框架攜帶日誌,需要使用exclusion排除掉。

七、Spring Web MVC框架

  • Spring MVC自動配置
    Spring Boot爲Spring MVC提供的auto-configuration適用於大多數應用,並在Spring默認功能上添加了以下特性:
    1、視圖解析:引入ContentNegotiatingViewResolver和BeanNameViewResolver beans。
    2、對靜態資源的支持,包括對WebJars的支持。
    3、類型轉換器:自動註冊Converter,GenericConverter,Formatter beans。
    4、對HttpMessageConverters的支持。
    自動註冊MessageCodeResolver。
    對靜態index.html的支持。
    對自定義Favicon的支持。
    自動使用ConfigurableWebBindingInitializer bean。
  • 使用Spring MVC默認配置
    如果保留Spring Boot MVC特性,你只需添加其他的MVC配置(攔截器,格式化處理器,視圖控制器等)。你可以添加自己的WebMvcConfigurerAdapter類型的@Configuration類,而不需要註解@EnableWebMvc。如果希望使用自定義的RequestMappingHandlerMapping,RequestMappingHandlerAdapter,或ExceptionHandlerExceptionResolver,你可以聲明一個WebMvcRegistrationsAdapter實例提供這些組件。
  • 不使用Spring MVC自動配置
    如果想全面控制Spring MVC,你可以添加自己的@Configuration,並使用@EnableWebMvc註解,這時Spring MVC所有的自動配置都將失效。
    更多內容詳見官網:
    中文:https://www.breakyizhan.com/springboot/3398.html
    英文:https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/howto.html#howto-spring-boot-application

持續更新……

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