部落格

  • 京津冀將規劃一體化電動汽車公共充電網絡

    京津冀將規劃一體化電動汽車公共充電網絡

    中國京津冀等三地於7月30日簽署了協議,將共同開發京津冀區域的一體化電動汽車公共充電網絡,目標在2020年完工實施。此案將涵蓋電動車發展以及充電設備標準的設立、充電設備之量化,相關國家政策也會陸續制定提出。

    中國大陸的電動車產業發展迅速,在「十二五」相關計畫之中就曾規劃2015年底要在全中國安裝40萬個電動車充電樁、2000個充換電站,但此一目標並沒有達成。究其原因,除了新能源電動車仍在發展階段之外,充電設備的標準尚未統一、社會資本進入難、營利模式單一等,都是使充電設備安裝計畫無法落實的原因。

    據中國媒體《經濟參考報》指出,在京津冀三地簽署共同發展合約後,國家級的電動車充電標準文件《電動汽車充電基礎設施指南》以及《充電基礎設施指導意見》等規章也會陸續提出,這規章將具體規劃充電設備的數量:到2020年時,國內充換電站的數量目標1.2萬個,充電樁450萬個;此外,電動車與充電設施的比例也預計將從現在的4:1提升到1:1左右。在如此龐大的數量規劃下,中國充電市場的規模預計會超過人民幣1000億元。

    不過,市場規模擴張的前提仍是充電設施建設能如期推行,而充電設施之建設推行則仰賴技術標準化,例如充電插槽、通訊協議等,以確保不同品牌的電動車都能一體適用。

    而在盈利與資本進入困難等問題方面,政策保障將可為市場資本創造可靠的入口,進而加強獲利幅度。

    中國國內的充電產業有越來越多國企、民企接連投入,例如青島特來電公司計畫到2015年底在全國40個城市建設7至10萬個充電設備,投資超過人民幣10億元,希望三年內能占全國市場50%以上。具有外資背景的富電科技公司也在今年一月在北京華貿中心落成中國首個核心商圈光伏智能充電站。車用充電業界也開始有創業者投入。

    (照片來源:)

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

    ※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

    南投搬家前需注意的眉眉角角,別等搬了再說!

    新北清潔公司,居家、辦公、裝潢細清專業服務

  • 亞洲首輛純電動垃圾車在台南展開清運服務

    亞洲首輛純電動垃圾車在台南展開清運服務

    四家經驗豐富的台灣電動車廠商合作,開發出全亞洲第一輛純電動垃圾清運車,並於台南展開清運服務。這輛純電動垃圾車具「三零一低」的特性:零耗油、零排碳、零怠速、低噪音,具有極高經濟效益。

    電動垃圾車廠商同均動能結合富田電機、利佳興業、立淵機械等三家公司,在經濟部工業局的計劃支持下,歷經兩年研發成功推出全亞洲首輛純電動垃圾清運車。垃圾車具有走停頻繁、車速慢的特色,且有壓縮垃圾的功能需求。傳統柴油垃圾車在低速行駛與剎車啟動時都會排放較多廢氣,且壓縮垃圾時也需啟動引擎來帶動壓縮力道,造成更嚴重的廢氣與噪音汙染。相較之下,電動垃圾車可改善上述問題,讓垃圾清運的過程更加舒適環保。

    這輛純電動垃圾車將於台南定時定點巡迴於鄉間與都市,執行垃圾清運任務,貫徹「綠色環境、低碳台灣」的理念。

    (圖片來源:翻攝同均動能)

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※別再煩惱如何寫文案,掌握八大原則!

  • 工信部將調查新能源車騙補 違規或將取消資質

    日前,有媒體報導稱,部分電動車廠和租賃運營公司,以迴圈使用電池組裝配整車方式,以少充多,騙取政府對新能源汽車的大量補貼。高額補貼不僅令一些原本沒有新能源技術儲備的汽車生產企業爭先恐後投入“電動化”,還在銷售環節進行算計。目前工信部等部門已經啟動調查,針對騙取新能源汽車補貼的企業或將面臨吊銷生產資質的嚴厲處罰。

    對此,一位從事動力電池專家王敏(化名)在接受採訪時表示:“這種現象的確存在,靠不正當手法獲得補貼的企業多為小型企業或改裝廠。”
      
    王敏對此解釋稱,一些車企騙取新能源補貼的方式主要有兩種,一是整車企業全資或參股汽車租賃公司,通過“自產自銷”的方式,拿到國家和地方對電動車的補貼;租賃公司購買的車輛並沒有投入運營,但是這些車輛在上牌之後,補貼已經到手。在兩類細分行業,一類是用於共用、租賃的乘用車,一類是用於城市物流的運營類車輛,都有騙補的情況發生。

    另一種方式,則是由一家汽車租賃運營公司主導,一邊採購整車企業,一邊與電池企業合作,通過“多採購整車,少採購電池”的方式,從中獲取補貼。這種方式是通過協力廠商運營公司來暗箱操作,有些車輛運營公司,一手牽著產銷規模甚小的電動車生產企業,一手與動力電池生產企業合作,通過將兩類公司的產品捏合在一起組成電動車,獲得政府補貼,很多車輛“空有牌照”,並沒有真正上路運營。

    根據2015年12月財政部發佈的《關於2016~2020年新能源汽車推廣應用財政支持政策的通知》,純電動、插電式混合動力(含增程式)等專用車、貨車推廣應用補助標準:按電池容量每千瓦時補助1800元。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※帶您來了解什麼是 USB CONNECTOR  ?

    ※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

    ※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

    ※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

    ※教你寫出一流的銷售文案?

  • 工信部與重慶簽訂啟動智慧汽車與智慧交通合作協議

    1月27日,中國工業和資訊化部、重慶市人民政府在重慶簽訂“基於寬頻移動互聯網的智慧汽車與智慧交通應用示範合作框架協定”,將共同推動構建4.5G/5G、智慧汽車與智慧交通融合發展的產業生態。

    根據合作框架協定和建設方案,工業和資訊化部、重慶市人民政府將共同推動構建4.5G/5G、智慧汽車與智慧交通融合發展的產業生態,研發一批智慧汽車與智慧交通關鍵技術和產品,帶動電子資訊、寬頻移動通信、移動互聯網、物聯網、汽車製造等相關產業的發展。

    未來三年,重慶市將逐步由試驗場區封閉環境到城市交通開放環境,加強關於自動駕駛、交通安全、舒適及節能環保、資訊服務及娛樂、交通管理等領域的新技術、新產品研究開發和檢測認證。重慶將在智慧駕駛、智慧路網、綠色用車、防盜追蹤、便捷停車、車與車的資源分享、大範圍交通誘導、交通狀態智慧管理等多個方面進行應用示範。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

    新北清潔公司,居家、辦公、裝潢細清專業服務

  • F-立凱、五龍動力聯手搶攻中國電動車市場

    F-立凱公告將與五龍動力、香港上市公司五龍電動車集團簽訂三方交易契約,共同深化電動車產業的上、下游布局,著眼爭取中國乃至於全球的電動車市場。

    根據協議,三方將以策略聯盟、資本合作的方式取得股權轉換方案。契約載明,五龍動力將以每股新台幣35元的價格取得立凱電新發行的普通股,佔增資後股本21.8%;思慕完成後,五龍電動車集團在另外以1億港幣(約新台幣4.2億)現金取得立凱電旗下車電事業部門──立凱綠能(蓋曼)股權,以及台灣立凱綠能的部分資產。交易完成後,五龍動力與五龍電動車集團預計將投資凱電超過新台幣20億元。

    此外,立凱電同時將以每股0.5元港幣的價格認購五龍電動車集團新發行之430萬普通股與2.75億元港幣的無擔保可轉換公司債,總投資額預計將達港幣4.9億元,並成為五龍電動車集團股東。此舉將幫助立凱電正式邁入中國電動車市場。

    F-立凱由尹衍樑投資,為電動巴士系統與磷酸鐵鋰電池正極材料廠商。與五龍動力、五龍電動車集團的交易完成後,將在兩岸三地與國際市場進行明確產業分工,由立凱電繼續投入正極材料研發、製造與銷售,同時為五龍動力提供LFP-NCO奈米金屬氧化物共晶體化磷酸鋰鐵電池正極材料M系列產品的生產與技術顧問服務。三方也將合作於中國建立材料廠,以因應未來中國電動車龐大的材料需求。

    此外,台灣立凱綠能也將與五龍電動車在電池芯、電池模組以及電動車技術等領域合作,同時不忘繼續拓展台灣電動巴士業務。F-立凱表示,本次策略聯盟,將可幫助F-立凱、五龍動力、五龍電動車集團、立凱電整合技術、製造、市場、供應鏈與資金,全面進軍中國與全球的儲能市場和電動車市場。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    ※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

    ※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

    ※評比南投搬家公司費用收費行情懶人包大公開

    ※幫你省時又省力,新北清潔一流服務好口碑

  • Gogoro積極搶市,南臺灣首站小琉球

    Gogoro積極搶市,南臺灣首站小琉球

    台灣本土電動機車品牌Gogoro又展開新動作!Gogoro與遠傳電信合作,推出申辦門號即享購車折扣的優惠,未來還將建立更廣泛的物聯網(IoT)功能。同時,Gogoro也正式走入南台灣,首個佈點將位於離島小琉球。

    搶市,Gogoro與通訊業者合作

    Gogoro日前宣布與遠傳電信合作推出「超級騎機」優惠購車方案,從5月13日起,凡到Gogoro門市申辦特定遠傳電信方案,就享有最高新台幣2萬元的購車優惠。若加上政府對民眾換購電動載具所提出的補貼,Gogoro最低只要新台幣4.3萬元就能騎回家,比目前主流的汽油機車還便宜。

    Gogoro表示,未來將與遠傳合作推動更多IoT服務,強化「智慧城市」與「量身打造」功能。

    此外,Gogoro為了替客戶降低使用成本,還將推出購車送免費里程1,200公里、電池租金低資費方案等服務,電池每月最低租金599元,可行駛400公里,超過後每1公里1元新台幣,積極搶市。

    台灣另一家電動機車業者中華汽車也大力推動e-moving車款,直接刺激台灣市場需求。目前,台灣每月電動機車銷量已達1,200輛左右,占整體機車銷售量2%以上。

    Gogoro登上小琉球島!

    成功在大台北、桃園、新竹等北台灣縣市佈點後,Gogoro進軍南台灣的第一站,被直擊將登陸離島小琉球。報導指出,小琉球去年底結束一間電動機車公司的合約,空出約300輛機車的需求缺口;有業者看上此一商機,因此與Gogoro商議,協助Gogoro南進,初期先引入100輛電動車試水溫。

    相較於舊款電動機車,Gogoro的馬力、續航力更好。且小琉球空間不大,設置一座24小時運作的電池交換站就很足夠。

    (照片來源:Gogoro Taiwan 臉書專頁)

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

  • 特斯拉第 2 季淨損擴大 二度下修銷售預測

    美國電動車大廠特斯拉(Tesla)公佈第 2 季財報,凈虧損為 1.843 億美元,而因車輛銷售持續攀高,營收成長 24%,達到 9.55 億美元,但與去年同期的凈虧損 1.542 億美元相比有所擴大,且一年內第二度下修銷售預測。   特斯拉表示,今年交車目標為 5 萬至 5.5 萬輛之間。去年執行長穆斯克發下豪語,說今年的銷售量將達 6 萬輛,今年稍早已調降到 5.5 萬輛,如今再度下修。不過,特斯拉仍預期今年 9 月底這款車將開始「少量交車」,但進度就算只延後一周,整體產量就會減少約 800 輛。     特斯拉上季資本支出總計 4.052 億美元,主要是持續用在 Model X 新車,以及預定 2016 年開幕的內華達州電池新廠。今年上半年的總支出達 8.312 億美元,預估全年支出約為 15 億美元。經調整後特斯拉上季每股虧損 48 美分,優於分析師預估的每股虧損 60 美分,去年同期則是每股獲利 13 美分。         

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

    ※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※帶您來看台北網站建置台北網頁設計,各種案例分享

    ※別再煩惱如何寫文案,掌握八大原則!

  • 中碳展開電動車、電池材料投資

    台灣中碳尋求投資轉型,因看好中國大陸電動車與電池相關產業的發展,因此在30日的年終記者會上宣布將啟動新投資案,搶攻中國大陸市場。

    中碳於記者會上表示,公司業績與油價高度相關,近日國際油價重挫,使公司尋求轉型以降低油價衝擊。其中,中國大陸因霾害嚴重,政府帶頭推動電動車產業,公司因此認為值得發展,將以公司的電池負極材料搶攻中國大陸的電動車市場。

    根據MoneyDJ的報導,中碳將投資約27億新台幣,在台灣屏東、小港、越南、中國大陸常州等地進行新的投資或擴產計畫,藉著這四大投資案來將碳材料與石化產品擴充為兩大營收來源。目前,中碳的碳材料營收比重已從去年的8%成長到今年的12%,明年可望進一步成長到16%。隨著擴產計畫,希望能在2020年拉高到50%。

    在屏東廠方面,中碳董事會將通過18.8億新台幣的擴產方案,規劃碳化、石墨化、篩分廠的年產能各2,000噸,預計於2018年第一季投產,供應電動車與超級電容的市場需求,

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

    ※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

    南投搬家前需注意的眉眉角角,別等搬了再說!

    新北清潔公司,居家、辦公、裝潢細清專業服務

  • “電動汽車就是大家電” 中國首次將電動汽車引入家電連鎖賣場

    中國首家電動汽車跨平臺運營商聯合電動21日在北京與蘇甯易購達成全面戰略合作,首次將電動汽車引入家電連鎖賣場,電動汽車作為新的電器商品門類與消費者見面。這是中國電動車在汽車流通領域的一次大膽嘗試,並將引發銷售管道顛覆性的變革。

    自此,消費者在逛電器商城時可以零距離地瞭解、購買電動汽車。此舉不僅為消費者帶來極大的便利,而且也論證了“電動汽車就是大家電”的全新理念。業內稱,這將為中國電動汽車行業的發展帶來革命性的思考和進步。

    中國汽車流通協會秘書長肖政三表示,將電動汽車引進家電連鎖賣場,迎合了汽車銷售多元化發展問題,汽車超市的概念是一種模式的創新,給消費者帶來的便利是可以預見的。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※別再煩惱如何寫文案,掌握八大原則!

  • SpringBoot 源碼解析 (一)—– SpringBoot核心原理入門

    SpringBoot 源碼解析 (一)—– SpringBoot核心原理入門

    Spring Boot 概述

    Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-based applications. Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring.

    上面是引自官網的一段話,大概是說: Spring Boot 是所有基於 Spring 開發的項目的起點。Spring Boot 的設計是為了讓你盡可能快的跑起來 Spring 應用程序並且盡可能減少你的配置文件。

    什麼是 Spring Boot

    • 它使用 “習慣優於配置” (項目中存在大量的配置,此外還內置一個習慣性的配置,讓你無須手動配置)的理念讓你的項目快速運行起來。
    • 它並不是什麼新的框架,而是默認配置了很多框架的使用方式,就像 Maven 整合了所有的 jar 包一樣,Spring Boot 整合了所有框架

    使用 Spring Boot 有什麼好處

    回顧我們之前的 SSM 項目,搭建過程還是比較繁瑣的,需要:

    • 1)配置 web.xml,加載 spring 和 spring mvc
    • 2)配置數據庫連接、配置日誌文件
    • 3)配置家在配置文件的讀取,開啟註解
    • 4)配置mapper文件
    • …..

    而使用 Spring Boot 來開發項目則只需要非常少的幾個配置就可以搭建起來一個 Web 項目,並且利用 IDEA 可以自動生成生成

    • 划重點:簡單、快速、方便地搭建項目;對主流開發框架的無配置集成;極大提高了開發、部署效率。

    Spring Boot HelloWorld

    導入依賴spring boot相關的依賴

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>cn.chenhao</groupId>
        <artifactId>springboot</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>springboot</name>
        <description>Demo project for Spring Boot</description>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.1.RELEASE</version>
            <relativePath/>
        </parent>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>

    編寫主程序

    /**
     * @SpringBootApplication來標註一個主程序類,說明這是一個SpringBoot應用
     */ @SpringBootApplication public class HelloWorldMainApplication {
    
        public static void main(String[] args) {
            //Spring應用啟動
            SpringApplication.run(HelloWorldMainApplication.class, args);
        }
    }

    編寫Controller、Service

    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String hello(){
            return "Hello world";
        }
    }

    運行主程序測試

    使用maven打包命令將其打包成jar包后,直接使用命令:

    java -jar xxx.jar

    Hello World探究

    POM文件

    父項目

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/>
    </parent>

    其父項目是

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>

    該父項目是真正管理Spring Boot應用裏面的所有依賴的版本:Spring Boot的版本仲裁中心,所以以後導入的依賴默認是不需要版本號。如下

    還有很多版本號沒有截圖出來

    啟動器

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    spring-boot-starter : spring boot場景啟動器;幫助導入web模塊正常運行所依賴的組件;

    ​ Spring Boot將所有的功能場景抽取出來,做成一個個的starter(啟動器),只需要在項目中引入這些starter,那麼相關的場景的所有依賴都會導入進項目中。要用什麼功能就導入什麼場景的啟動器。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>

    添加了 spring-boot-starter-web 依賴,會自動添加 Tomcat 和 Spring MVC 的依賴

    spring-boot-starter-web中又引入了spring-boot-starter-tomcat

    主程序類(主入口類)

    @SpringBootApplication public class HelloWorldMainApplication {
    
        public static void main(String[] args) {
            //Spring應用啟動
            SpringApplication.run(HelloWorldMainApplication.class, args);
        }
    }

    @SpringBootApplication

    • Spring Boot應用標註在某個類上,說明這個類是SpringBoot的主配置類,SpringBoot就應該運行這個類的main方法來啟動SpringBoot應用。

    註解定義如下:

    @SpringBootConfiguration @EnableAutoConfiguration
    @ComponentScan(excludeFilters = {
            @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
            @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
    public @interface SpringBootApplication {}

    @SpringBootConfiguration

    • Spring Boot的配置類
    • 標註在某個類上,表示這是一個Spring Boot的配置類

    註解定義如下:

    @Configuration public @interface SpringBootConfiguration {}

    其實就是一個Configuration配置類,意思是HelloWorldMainApplication最終會被註冊到Spring容器中

    @EnableAutoConfiguration

    • 開啟自動配置功能
    • 以前使用Spring需要配置的信息,Spring Boot幫助自動配置;
    • @EnableAutoConfiguration通知SpringBoot開啟自動配置功能,這樣自動配置才能生效。

    註解定義如下:

    @AutoConfigurationPackage
    @Import(EnableAutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration {}

    @AutoConfigurationPackage

    • 自動配置包註解
    @Import(AutoConfigurationPackages.Registrar.class) public @interface AutoConfigurationPackage {}

    @Import(AutoConfigurationPackages.Registrar.class):默認將主配置類(
    @SpringBootApplication)所在的包及其子包裏面的所有組件掃描到Spring容器中。如下

    @Order(Ordered.HIGHEST_PRECEDENCE)
    static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports {
    
        @Override
        public void registerBeanDefinitions(AnnotationMetadata metadata,
                BeanDefinitionRegistry registry) {
              //默認將會掃描@SpringBootApplication標註的主配置類所在的包及其子包下所有組件
            register(registry, new PackageImport(metadata).getPackageName());
        }
    
        @Override
        public Set<Object> determineImports(AnnotationMetadata metadata) {
            return Collections.<Object>singleton(new PackageImport(metadata));
        }
    }

    @Import(EnableAutoConfigurationImportSelector.class)

    EnableAutoConfigurationImportSelector: 導入哪些組件的選擇器,將所有需要導入的組件以全類名的方式返回,這些組件就會被添加到容器中。

     1 //EnableAutoConfigurationImportSelector的父類:AutoConfigurationImportSelector
     2 @Override
     3 public String[] selectImports(AnnotationMetadata annotationMetadata) {
     4     if (!isEnabled(annotationMetadata)) {
     5         return NO_IMPORTS;
     6     }
     7     try {
     8         AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader
     9             .loadMetadata(this.beanClassLoader);
    10         AnnotationAttributes attributes = getAttributes(annotationMetadata);
    11         List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes); 12         configurations = removeDuplicates(configurations);
    13         configurations = sort(configurations, autoConfigurationMetadata);
    14         Set<String> exclusions = getExclusions(annotationMetadata, attributes);
    15         checkExcludedClasses(configurations, exclusions);
    16         configurations.removeAll(exclusions);
    17         configurations = filter(configurations, autoConfigurationMetadata);
    18         fireAutoConfigurationImportEvents(configurations, exclusions);
    19         return configurations.toArray(new String[configurations.size()]);
    20     }
    21     catch (IOException ex) {
    22         throw new IllegalStateException(ex);
    23     }
    24 }

    我們主要看第11行List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);會給容器中注入眾多的自動配置類(xxxAutoConfiguration),就是給容器中導入這個場景需要的所有組件,並配置好這些組件。我們跟進去看看

    protected List<String> getCandidateConfigurations(AnnotationMetadata metadata,
                AnnotationAttributes attributes) {
        List<String> configurations = SpringFactoriesLoader.loadFactoryNames(
            getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());
        //...
        return configurations;
    }
    
    protected Class<?> getSpringFactoriesLoaderFactoryClass() {
        return EnableAutoConfiguration.class;
    }
    
    public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";
    
    public static List<String> loadFactoryNames(Class<?> factoryClass, ClassLoader classLoader) {
        String factoryClassName = factoryClass.getName();
        try {
            //從類路徑的META-INF/spring.factories中加載所有默認的自動配置類
            Enumeration<URL> urls = (classLoader != null ? classLoader.getResources(FACTORIES_RESOURCE_LOCATION) :
                                     ClassLoader.getSystemResources(FACTORIES_RESOURCE_LOCATION));
            List<String> result = new ArrayList<String>();
            while (urls.hasMoreElements()) {
                URL url = urls.nextElement();
                Properties properties = PropertiesLoaderUtils.loadProperties(new UrlResource(url));
                //獲取EnableAutoConfiguration指定的所有值,也就是EnableAutoConfiguration.class的值
                String factoryClassNames = properties.getProperty(factoryClassName);
                result.addAll(Arrays.asList(StringUtils.commaDelimitedListToStringArray(factoryClassNames)));
            }
            return result;
        }
        catch (IOException ex) {
            throw new IllegalArgumentException("Unable to load [" + factoryClass.getName() + "] factories from location [" + FACTORIES_RESOURCE_LOCATION + "]", ex);
        }
    }

    SpringBoot啟動的時候從類路徑下的
    META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,並將這些值作為自動配置類導入到容器中,自動配置類就會生效,最後完成自動配置工作。EnableAutoConfiguration默認在spring-boot-autoconfigure這個包中,如下圖

    最終有96個自動配置類被加載並註冊進Spring容器中

    J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-xxx.jar中。在這些自動配置類中會通過@ConditionalOnClass等條件註解判斷是否導入了某些依賴包,從而通過@Bean註冊相應的對象進行自動配置。後面我們會有單獨文章講自動配置的內容

     

     

     

     

     

     

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
    【其他文章推薦】

    ※帶您來了解什麼是 USB CONNECTOR  ?

    ※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

    ※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

    ※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益