本文記錄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砍掉這很多煩人的配置,規定了自己的渲染原則,總的來說確實比之前的開發效率強多了,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227048.html
標籤:Java
上一篇:Java 從入門到精通-反射機制
