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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2021-11-06(为什么程序员是青春饭)

發(fā)布時間:2023/12/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021-11-06(为什么程序员是青春饭) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

結(jié)論
關(guān)于程序員的工作是否是在吃“青春飯”這個話題,在網(wǎng)上及網(wǎng)下的討論熱度,完全不亞于編程語言之爭。我先說自己的觀點,也希望和大家討論一下,看看是不是自己哪里想得不對。
結(jié)論:程序員確實是吃“青春飯”的。

看到這句話你可能有點失望,我相信你肯定是因為擔憂,所以才會關(guān)注這個話題。你希望找到一個結(jié)論,來證明程序員不是吃"青春飯"的。因為我和你一樣,也擔憂過。可能你做過的事情,我都已經(jīng)做過一遍了,比如去看全網(wǎng)的文章。
接下來言歸正傳( SpringBoot運行原理剖析)
(一) SpringApplication類作用及run()方法作用
? SpringApplication這個類整合了其他框架的啟動類, 只要運行這一個類,所有的整合就都完成了.
? 調(diào)用run函數(shù), 將當前啟動類的字節(jié)碼傳入(主要目的是傳入@SpringBootApplication這個注解), 以及main函數(shù)的args參數(shù).
? 通過獲取當前啟動類的核心信息, 創(chuàng)建IOC容器.
(二) 當前啟動類@SpringBootApplication詳細剖析
run函數(shù)傳入的當前啟動類字節(jié)碼, 最重要的是傳入了@SpringBootApplication, 點開該注解源碼, 會發(fā)現(xiàn)有多個注解組成,接下來會詳細解釋每個注解的含義.
點開這個注解源碼, 發(fā)現(xiàn)有4類注解.

(1) 第一類: JDK原生注解4個
@Target(ElementType.TYPE) //當前注解的使用范圍
@Retention(RetentionPolicy.RUNTIME) //生命周期
@Documented //聲明在生成doc文檔時是否帶著注解
@Inherited //聲明是否子類會顯示父類的注解

(2)第二類: @SpringBootConfiguration
點開該注解源碼, 會發(fā)現(xiàn)本質(zhì)是@Configuration,定義該類是個配置類功能等同于xml配置文件.

提到@Configuration就要提到他的搭檔@Bean, 使用這兩個注解就可以創(chuàng)建一個簡單的Spring配置類, 可以用來替代相應(yīng)的xml配置文件.可以理解為創(chuàng)建了IOC容器了.
(3)第三類: @ComponentScan, 包掃描功能.
這個注解對應(yīng)Spring的XML配置中的@ComponentScan,其實就是自動掃描并加載符合條件的組件(比如@Component和@Repository等)或者bean定義, 最終將這些bean定義加載到IoC容器中.
也可以通過basePackages等屬性來細粒度的定制@ComponentScan自動掃描的范圍, 如果不指定, 則默認掃描@ComponentScan所在類的package及子包進行掃描。
注:所以SpringBoot的啟動類最好是放在root package下,因為默認不指定basePackages, 這樣能掃描root package及子包下的所有類.
(4)第四類: @EnableAutoConfiguration
點開源碼會發(fā)現(xiàn),本質(zhì)是@import, 自動導(dǎo)入功能

  • @EnableAutoConfiguration也是借助@Import的幫助,將所有符合自動配置條件的bean定義加載到IoC容器.
    @EnableAutoConfiguration會根據(jù)類路徑中的jar依賴為項目進行自動配置, 如:添加了spring-boot-starter-web依賴, 會自動添加Tomcat和SpringMVC的依賴, SpringBoot會對Tomcat和SpringMVC進行自動配置.
  • 那么SpringBoot是如何完成自動配置的呢?
    A. SpringBoot自動配置的注解是 @EnableAutoConfiguration.
    B. 我們用的時候是在啟動類上加@SpringBootApplication,這個注解是復(fù)合注解,內(nèi)部包含 @EnableAutoConfiguration
    C. @EnableAutoConfiguration內(nèi)部有一個@Import, 這個注解才是完成自動配置的關(guān)鍵.
    D. @Import導(dǎo)入一個類(AutoConfigurationImportSelector),這個類內(nèi)部提供了一個方法(selectImports). 這個方法會掃描導(dǎo)入的所有jar包下的spring.factories文件. 解析文件中自動配置類key=value, 將列表中的類創(chuàng)建,并放到Spring容器中.
  • 8.5.3 總結(jié)
    總之一個@SpringBootApplication注解就搞定了所有事, 它封裝了核心的@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan這三個類,大大節(jié)省了程序員配置時間,這就是SpringBoot的核心設(shè)計思想.
    6.6 SpringBoot熱部署(了解)
    導(dǎo)入spring-boot-devtools這個jar包: 就可以完成熱部署了.
    6.7 SpringBoot中的配置文件(必會)
    (1)有哪些配置文件?
    bootstrap: yml/application
    application: yml/application
    (2)上面兩種配置文件有什么區(qū)別?
  • bootstrap由父ApplicationContext加載, 比application配置文件優(yōu)先被加載.
  • bootstarp里的屬性不能被覆蓋.
  • application: springboot項目中的自動化配置.
  • bootstrap:
    使用spring cloud config配置中心時, 需要加載連接配置中心的配置屬性的, 就 可以使用bootstrap來完成.
    加載不能被覆蓋的屬性.
    加載一些加密/解密的數(shù)據(jù).
    (3)讀取配置文件的方式?
    ? 讀取默認配置文件
    需要注入Environment類, 使用environment.getProperty(peorperties中的key), 這樣就能獲得key對應(yīng)的value值
    @value(${key.value}) 直接讀取
    ? 讀取自定義配置文件
    ? 自定義配置文件后綴必須是.propeties
    ? 編寫和自定義配置文件對應(yīng)的java類, 類上放3個注解
    ? @ConfigurationProperties(“前綴”)
    ? @PropertySource(“指定配置文件”)
    ? @@Component包掃描
    ? 讀取的時候就跟讀取默認配置文件一樣.
  • 總結(jié)

    以上是生活随笔為你收集整理的2021-11-06(为什么程序员是青春饭)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。