日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring-core

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring-core 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spring最核心的組件是BeanFactory,看了源碼才發現,BeanFactory并非定義在spring-core中,那spring-core都有啥東東?

spring-core主要提供以下服務,為BeanFactory的定義提供基礎服務。

1, ConversionService

ConversionService.png
提供可配置的類型轉換服務

Converters.png
依賴內部的注冊表,

DefaultConversionService.png
默認支持的類型轉換

查找匹配的Converter

find-1.png

find-2.png
2, Environment
PropertySource:任何能提供key-value查找能力的數據源
MutablePropertySources:PropertySource集合,可動態增刪
profile:bean定義的邏輯分組,一個profile表示一組bean,只有active的profile對應的bean才會注冊到bean容器里。
Environment:繼承PropertyResolver,依賴內部的MutablePropertySources提供key查找服務,存儲當前active的profile。Environment表示用profile標識的一組key-value,作為其他關聯到profile的組件(bean定義)的Context。

StandardEnvironment.png
StandardEnvironment默認支持系統屬性和系統變量

profile.png
如果profile沒有顯示指定,默認從當前Environment的key值spring.profiles.active獲取,逗號分割。

StandardServletEnvironment.png
StandardServletEnvironment屬性源中額外添加了ServletContext和ServletConfig中的key-value。

3, Resource
資源就是一個基于各種協議+特定路徑的InputStream

協議.png
FileUrlResource:基于文件路徑的資源

FileUrlResource-1.png

FileUrlResource-2.png
ClassPathResource:

ClassPathResource-1.png

ClassPathResource-2.png
4, 序列化和反序列化

默認基于jdk的序列化.png

默認基于jdk的反序列化.png
5, 訪問類型元數據:可以不加載類,直接解析字節碼,spring boot應用類型推斷的基礎。

類元數據.png

類和方法及其注解元數據.png

基于反射.png
基于反射實現的標準元數據

基于asm.png
基于asm直接解析字節碼,不需要加載class,這就是打開spring boot源碼各種類未定義但是程序可以運行的原因。類在字節碼執行過程中遇到了才會加載,使用類的方法首先要有對象,構造對象的任務都委托給了spring的BeanFactory,在spring boot中BeanFactory首先會檢查注解中的條件是否滿足,指定的類是否可以使用classloader加載,不滿足條件的不加載,就算字節碼無法編譯通過,只要不加載就不會影響程序運行。

總結

以上是生活随笔為你收集整理的spring-core的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。