Spring-boot01

来源:https://www.cnblogs.com/xhj928675426/archive/2020/06/03/13039997.html
-Advertisement-
Play Games

本文記錄Spring-Boot學習途中的點點滴滴。 其實Spring-Boot出來好長時間了,但是一直沒去關註過。之前在我的印象里Spring-Boot好就好在減去了很多XML配置,加入了很多自動配置,將註解運用到了極致。想想好像也沒啥技術點可以去學習,不過最近打算用spring-Boot做個小網站 ...


本文記錄Spring-Boot學習途中的點點滴滴。
其實Spring-Boot出來好長時間了,但是一直沒去關註過。之前在我的印象里Spring-Boot好就好在減去了很多XML配置,加入了很多自動配置,將註解運用到了極致。想想好像也沒啥技術點可以去學習,不過最近打算用spring-Boot做個小網站啥的,才突然發現
Spring-Boot的強大。果真應了那句話:真香!

1.先來說下Spring-Boot入門大法:
按以往的項目經驗,那沒啥可說,MAVEN工程啟動就完事兒了,但最近更新了下IDEA,發現項目啟動項中多了一欄:

去Spring官網看了看,發現這玩意兒簡直太好了,用這個Spring啟動項,它會將SpringWEB開發中要用到的一切組件場景都一一給你羅列出來,這下方便了不用再去寫POM了。直接勾選web服務IDEA就為你自動配置好了。還有什麼Springdata,Nosql,SQL....這些場景你只需勾選IDEA會幫你自動配置。
這個插件實數良心。

項目部署完成後,我一臉懵逼,啥?沒有WEB-INF目錄,寫個錘子的WEB呀。我JSP放哪兒?
果然太年輕,Spring-BOOT以JAR包的方式運行在內嵌的Tomcat下,根本不支持JSP。那用什麼渲染前端?
答:HTML。
對就是這麼簡單,用最原始的HTML就行了,也不需要WEB-INF目錄,Spring-Boot有自己的規定,Spring-Boot自動去以下目錄:
"classpath:/META‐INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" "/"去找。

2、SpringBoot對靜態資源的映射規則

查看源碼我們可以發現,Spring-Boot對靜態資源的幾種映射規則:
if (!registry.hasMappingForPattern("/webjars/**")) { customizeResourceHandlerRegistration( registry.addResourceHandler("/webjars/**") .addResourceLocations( "classpath:/META‐INF/resources/webjars/") .setCachePeriod(cachePeriod)); }

所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找資源;
webjars:以jar包的方式引入靜態資源;
可以去WEBJAR的官網找到這些包。
http://www.webjars.org/
localhost:8080/webjars/jquery/3.3.1/jquery.js

3、模板引擎
既然不支持JSP,不可能只用原始的HTML吧?不會吧。不會吧。
答:支持Thymeleaf.

這玩意兒第一次使用還是在我開始學JAVA web的時候,總的來說跟JSP大同小異,但是句法更強大。總比C:那一套強多了!
Thymeleaf有自己的渲染規則,預設在classpath:/templates/"下對所有html進行渲染。為什麼非得是/templates,我也不知道,源碼是這麼寫的。。。

@ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = Charset.forName("UTF‐8"); private static final MimeType DEFAULT_CONTENT_TYPE = MimeType.valueOf("text/html"); public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html";

跟之前的JSP句法規則對比:

4.配置文件
再來說說配置文件,之前什麼SSM,ssh一大堆的配置文件到Spring-Boot都跑哪兒去了?
(Spring-Boot)答:爺不需要配置文件。
玩笑歸玩笑,哪有不需要程式員去配置的項目。但是細看Spring-Boot底層源碼,它已經將很多MVC,視圖解析器,包掃描器等都已經自動註入場景了,根本不用去配置。
但是Spring-BOOT也提供了兩個全局預設配置文件。
SpringBoot使用一個全局的配置文件,配置文件名是固定的;
•application.properties
•application.yml

YAML(YAML Ain't Markup Language)
YAML A Markup Language:是一個標記語言
YAML isn't Markup Language:不是一個標記語言;
標記語言:
以前的配置文件;大多都使用的是 xxxx.xml文件; YAML:以數據為中心,比json、xml等更適合做配置文件;

YAML的句法可自行去瞭解,比起Properties.只能說有好有壞吧,本人比較喜歡用properties,但是面對複雜屬性包裝的時候比如:MAP,List等用YAML去配置簡潔許多

5.註解
學新東西,必然得瞭解下一些註解的作用。
主程式類,主入口類:

@SpringBootApplication: Spring Boot應用標註在某個類上說明這個類是SpringBoot的主配置類,SpringBoot 就應該運行這個類的main方法來啟動SpringBoot應用;
@SpringBootConfiguration:Spring Boot的配置類; 標註在某個類上,表示這是一個Spring Boot的配置類;
@Configuration:配置類上來標註這個註解;
配置類 ----- 配置文件;配置類也是容器中的一個組件;@Component
@EnableAutoConfiguration:開啟自動配置功能; 以前我們需要配置的東西,Spring Boot幫我們自動配置;
@EnableAutoConfiguration告訴SpringBoot開啟自 動配置功能;這樣自動配置才能生效;

@AutoConfigurationPackage:自動配置包
@Import(AutoConfigurationPackages.Registrar.class): Spring的底層註解@Import,給容器中導入一個組件;
導入的組件由 AutoConfigurationPackages.Registrar.class;
將主配置類(@SpringBootApplication標註的類)的所在包及下麵所有子包裡面的所有組件掃描到Spring容器;
@Import(EnableAutoConfigurationImportSelector.class);
給容器中導入組件? EnableAutoConfigurationImportSelector:導入哪些組件的選擇器;
將所有需要導入的組件以全類名的方式返回;這些組件就會被添加到容器中; 會給容器中導入非常多的自動配置類(xxxAutoConfiguration);就是給容器中導入這個場景需要的所有組件, 並配置好這些組件;

今日到此結束。。每天記下日誌框架和自動配置原理。
總結:有過SSM,SSH基礎的來說學起來相當清爽,Spring-Boot砍掉這很多煩人的配置,規定了自己的渲染原則,總的來說確實比之前的開發效率強多了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、Overview Angular 入坑記錄的筆記第六篇,介紹 Angular 路由模塊中關於路由守衛的相關知識點,瞭解常用到的路由守衛介面,知道如何通過實現路由守衛介面來實現特定的功能需求,以及實現對於特性模塊的惰性載入 對應官方文檔地址: 路由與導航 配套代碼地址:angular-practi ...
  • 理解面向對象編程及面向對象編程語言的關鍵就是理解其四大特性:封裝、抽象、繼承、多態。不過,對於這四大特性,光知道它們的定義是不夠的,我們還要知道每個特性存在的意義和目的,以及它們能解決哪些編程問題 ...
  • Microsoft在2015年4月30日Build 開發者大會上正式宣佈了 Visual Studio Code 項目:一個運行於 Mac OS X、Windows和 Linux 之上的,針對於編寫現代 Web 和雲應用的跨平臺源代碼編輯器。現在的很多程式員也在利用VScode進行開發。接下來介紹如 ...
  • Java生鮮電商平臺-微服務生鮮電商系統設計(小程式/APP) 說明:本文章主要是講解-微服務生鮮電商系統設計與架構,希望對大家有所幫助 在實際業務場景中如何設計一套電商系統呢? 我們簡單想象一下,既然是一個電商系統,有用戶去購買,就肯定得有一個用戶模塊,購買什麼東西總不是西北風吧,購買肯定是商品吧 ...
  • 見到女朋友每次修改代碼都傻乎乎的重啟伺服器~~~你累不累,氣的我上去給了她一巴掌~~~。什麼時候了熱部署都不會,上教程!!! 1、idea設置自動編譯(設置在哪我就不說了) 2、ctrl+shift+alt+/,然後進去regist enter之後,找到這三個配置項,配置運行自動編譯和延遲更新毫秒數 ...
  • Ribbon客戶端組件提供一系列完善的配置選項,比如連接超時、重試、重試演算法等,內置可插拔、可定製的負載均衡組件。下麵是用到的一些負載均衡策略: 簡單輪詢負載均衡 加權輪詢負載均衡 區域感知輪詢負載均衡 隨機負載均衡 先寫一個類模擬一個IP列表: public class IpMap { // 待路 ...
  • 一、return語句 1.main函數有return語句,但是也可以沒有,對於main函數,運行完最後一行語句,就會自動自動返回一個0,但是其他函數是不可以的,為了養成好習慣,請在main函數末尾添加return 0; 2.return語句是一種跳轉語句。 3.舉例 #include <stdio. ...
  • 毫無疑問 Python 中沒有所謂的 main 入口函數,但是網上經常看到一些文章提“Python 的 main 函數”、“建議寫 main 函數”…… 有些人是知情的,他的意圖可能是模仿那些正宗的 main 函數,但還有不少人明顯是被誤導了(或自己誤解了),就寫出來很累贅的代碼。 本期“Pytho ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...