最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Springboot

2021-10-07 23:21 作者:劍離我離  | 我要投稿

?Springboot

?

  • 文檔地址: https://www.yuque.com/atguigu/springboot

  • 文檔不支持舊版本IE、Edge瀏覽器,請(qǐng)使用chrome或者firefox

基礎(chǔ)入門--Hello World

首先,創(chuàng)建maven工程,并引入對(duì)應(yīng)的依賴:

<parent> ? ? ? ?<groupId>org.springframework.boot</groupId> ? ? ? ?<artifactId>spring-boot-starter-parent</artifactId> ? ? ? ?<version>2.3.4.RELEASE</version> ? ?</parent> ? ?<dependencies> ? ? ? ?<dependency> ? ? ? ? ? ?<groupId>org.springframework.boot</groupId> ? ? ? ? ? ?<artifactId>spring-boot-starter-web</artifactId> ? ? ? ?</dependency> ? ?</dependencies>

?

接著,創(chuàng)建一個(gè)spirngboot的主程序:

/** * 主程序類 * @SpringBootapplication 這是一個(gè)SpirngBoot應(yīng)用 */ @SpringBootapplication public class Mainapplication { ? ?public static void main(String[] args) { ? ? ? ?Springapplication.run(Mainapplication.class,args); ? ?} }

接著創(chuàng)建controller層。

在springBoot中,有controller和Responbody的復(fù)合注解:RestController

然后只需要在spirngboot的主程序中啟動(dòng),即可在瀏覽器中打開;

配置文件

配置中都是能抽取出來為全局使用的

自動(dòng)配置

ConfigurableapplicationContext run = Springapplication.run(Mainapplication.class, args);

主程序類中,返回的是一個(gè)包含很多的IOC容器。

默認(rèn)的包結(jié)構(gòu):

主程序所在包及其下面的所有子包里面的組件都會(huì)被默認(rèn)掃描。

  • 想要改變掃描路徑,@SpringBootapplication(scanBasePackages="com.atguigu")

  • 或者@ComponentScan 指定掃描路徑

容器功能

--Spring中注冊(cè)了一個(gè)組件交給容器管理后,而在容器中,這是單實(shí)例的,不管獲取多少次,都還是這個(gè)組件。

使用注解代替xml來注冊(cè)組件。

1、配置類里面使用@Bean標(biāo)注在方法上給容器注冊(cè)組件,默認(rèn)也是單實(shí)例的。

2、配置類本身也是組件

3、如果@Configuration(proxyBeanMethods = true) 代理對(duì)象調(diào)用方法。SpringBoot總會(huì)檢查這個(gè)組件是否在容器中有。如果有,就不會(huì)新創(chuàng),保證單實(shí)例。如果是false,那么就會(huì)變成多實(shí)例了。

外部無論對(duì)配置類中的這個(gè)組件注冊(cè)方法調(diào)用多少次獲取的都是之前注冊(cè)容器的單實(shí)例對(duì)象。

組件依賴:比如用戶養(yǎng)的寵物,如果是true,那么從用戶中取出寵物的class和從容器中取出寵物的class是相同的。

調(diào)成false的優(yōu)勢(shì):Spring就不會(huì)檢查是否會(huì)有這個(gè)代理對(duì)象,跳過了檢查,啟動(dòng)就會(huì)非??臁?/p>

  • Full模式與Lite模式

  • 示例

  • 最佳實(shí)戰(zhàn)

  • 配置 類組件之間無依賴關(guān)系用Lite模式加速容器啟動(dòng)過程,減少判斷

  • 配置類組件之間有依賴關(guān)系,方法會(huì)被調(diào)用得到之前單實(shí)例組件,用Full模式

4、@Import注解

* 4、@Import({User.class, DBHelper.class}) * ? ? ?給容器中自動(dòng)創(chuàng)建出這兩個(gè)類型的組件、默認(rèn)組件的名字就是全類名 * * * */ @Import({User.class, DBHelper.class}) @Configuration(proxyBeanMethods = false) //告訴SpringBoot這是一個(gè)配置類 == 配置文件 public class MyConfig { }

@Conditional

條件裝配

配置綁定

springIOC管理,當(dāng)bean加入了容器交給了Spirng管理的時(shí)候,就能在配置文件中,直接去修改這個(gè)組件的某個(gè)屬性的值。

屬性綁定:@ConfigurationProperties(prefix="xxx")

@EnableConfigurationProperties(car.class):

1、開啟car配置綁定功能

2、把這個(gè)car組件自動(dòng)注冊(cè)到容器中

場(chǎng)景問題:當(dāng)引用第三方包時(shí),不能在其bean上標(biāo)注@component,但可以使用@EnableConfigurationProperties

SpirngBoot默認(rèn)會(huì)在底層配好所有的組件,但是如果用戶自己配置了以用戶的優(yōu)先

總結(jié)

  • SpringBoot先加載所有的自動(dòng)配置類 xxxxxAutoConfiguration

  • 每個(gè)自動(dòng)配置類按照條件進(jìn)行生效,默認(rèn)都會(huì)綁定配置文件指定的值。xxxxProperties里面拿。xxxProperties和配置文件進(jìn)行了綁定

  • 生效的配置類就會(huì)給容器中裝配很多組件

  • 只要容器中有這些組件,相當(dāng)于這些功能就有了

  • 定制化配置

  • 用戶直接自己@Bean替換底層的組件

  • 用戶去看這個(gè)組件是獲取的配置文件什么值就去修改。

xxxxxAutoConfiguration ---> 組件 ---> xxxxProperties里面拿值 ----> application.properties

最佳實(shí)踐

開發(fā)小技巧

Lombok

get、set、toString方法:@Date

全參構(gòu)造器:@AllArgsConstructor

無參構(gòu)造器:@NoArgsConstructor

Hashcode:@EqualsAndHashCode

日志屬性添加:@Slf4j :

直接可以在對(duì)應(yīng)的地方加上: log.info("xxx");

<dependency> ? ? ? ? ? ?<groupId>org.projectlombok</groupId> ? ? ? ? ? ?<artifactId>lombok</artifactId> ? ? ? ?</dependency> idea中搜索安裝lombok插件

dev-tools

項(xiàng)目或者頁面修改以后:Ctrl+F9;

<dependency> ? ? ? ? ? ?<groupId>org.springframework.boot</groupId> ? ? ? ? ? ?<artifactId>spring-boot-devtools</artifactId> ? ? ? ? ? ?<optional>true</optional> ? ? ? ?</dependency>

Spring Initailizr(項(xiàng)目初始化向?qū)В?/p>

核心功能篇

配置文件

yaml

1.2.2、基本語法

  • key: value;kv之間有空格

  • 大小寫敏感

  • 使用縮進(jìn)表示層級(jí)關(guān)系

  • 縮進(jìn)不允許使用tab,只允許空格

  • 縮進(jìn)的空格數(shù)不重要,只要相同層級(jí)的元素左對(duì)齊即可

  • '#'表示注釋

  • 字符串無需加引號(hào),如果要加,''與""表示字符串內(nèi)容 會(huì)被 轉(zhuǎn)義/不轉(zhuǎn)義

雙引號(hào)不會(huì)轉(zhuǎn)義,單引號(hào)會(huì)轉(zhuǎn)義

Web開發(fā)

2、簡單功能分析

2.1、靜態(tài)資源訪問

1、靜態(tài)資源目錄

只要靜態(tài)資源放在類路徑下: called?/static?(or?/public?or?/resources?or?/META-INF/resources

訪問 : 當(dāng)前項(xiàng)目根路徑/ + 靜態(tài)資源名

原理: 靜態(tài)映射/**。

請(qǐng)求進(jìn)來,先去找Controller看能不能處理。不能處理的所有請(qǐng)求又都交給靜態(tài)資源處理器。靜態(tài)資源也找不到則響應(yīng)404頁面

改變默認(rèn)的靜態(tài)資源路徑

spring: ?mvc: ? ?static-path-pattern: /res/** ?resources: ? ?static-locations: [classpath:/haha/]

2、靜態(tài)資源訪問前綴

默認(rèn)無前綴

spring: ?mvc: ? ?static-path-pattern: /res/**

當(dāng)前項(xiàng)目 + static-path-pattern + 靜態(tài)資源名 = 靜態(tài)資源文件夾下找

3、webjar

自動(dòng)映射 /webjars/**

https://www.webjars.org/

<dependency> ? ? ? ? ? ?<groupId>org.webjars</groupId> ? ? ? ? ? ?<artifactId>jquery</artifactId> ? ? ? ? ? ?<version>3.5.1</version> ? ? ? ?</dependency>

訪問地址:http://localhost:8080/webjars/jquery/3.5.1/jquery.js 后面地址要按照依賴?yán)锩娴陌窂?/p>

2.2、歡迎頁支持

  • 靜態(tài)資源路徑下 index.html

  • 可以配置靜態(tài)資源路徑

  • 但是不可以配置靜態(tài)資源的訪問前綴。否則導(dǎo)致 index.html不能被默認(rèn)訪問

spring: # ?mvc: # ? ?static-path-pattern: /res/** ? 這個(gè)會(huì)導(dǎo)致welcome page功能失效 ?resources: ? ?static-locations: [classpath:/haha/]

  • controller能處理/index

2.3、自定義 Favicon

favicon.ico 放在靜態(tài)資源目錄下即可。

spring: # ?mvc: # ? ?static-path-pattern: /res/** ? 這個(gè)會(huì)導(dǎo)致 Favicon 功能失效

如果一個(gè)配置類只有一個(gè)有參構(gòu)造器,那么其所有屬性的值,都會(huì)默認(rèn)從容器中找。

小記:@responseBody 是將后端返回的數(shù)據(jù)封裝成json串

矩陣變量,分號(hào)的形式:

/cars/sell;low=34;brand=byd/xxx;xx=xx

自定義convert:相當(dāng)于在配置類中進(jìn)行方法的重寫

3、開啟瀏覽器參數(shù)方式內(nèi)容協(xié)商功能

為了方便內(nèi)容協(xié)商,開啟基于請(qǐng)求參數(shù)的內(nèi)容協(xié)商功能。

spring: ? ?contentnegotiation: ? ? ?favor-parameter: true ?#開啟請(qǐng)求參數(shù)內(nèi)容協(xié)商模式

發(fā)請(qǐng)求: http://localhost:8080/test/person?format=json

http://localhost:8080/test/person?format=xml

format后面帶上具體想要的方式

視圖解析 ?渲染

使用模板引擎渲染:

表單發(fā)送(轉(zhuǎn)發(fā)重定向),刷新仍停留上一次發(fā)送的請(qǐng)求(表單的post),但是不能直接重定向,因?yàn)榉庆o態(tài)資源,模板引擎templates文件夾下所有的頁面都需要經(jīng)過請(qǐng)求處理(controller),最后由模板的渲染。

要被thymeleaf解析,每一個(gè)html都要加上thymeleaf的名稱空間。

文件上傳

異常處理

導(dǎo)入的服務(wù)器只能有一個(gè),不然會(huì)報(bào)錯(cuò)。

數(shù)據(jù)訪問

maven的最短路徑原則 通過最短路徑,最佳匹配來直接修改mysql驅(qū)動(dòng)版本

自定義datasource版本時(shí),可以通過@Bean方式添加組件,返回一個(gè)Datasource,同時(shí),可以綁定配置文件:

@ConfigurationProperties("")

單元測(cè)試

Junit5

springboot整合了Junit5的功能,junit類具有Spring的功能,@Autowire,比如@Transactional標(biāo)注測(cè)試方法,測(cè)試完成后自動(dòng)回滾;

特性

@EnableConfigurationProperties(xxx.class) ?將對(duì)應(yīng)類和配置文件綁定并且自動(dòng)放到容器中


Springboot的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
怀仁县| 林西县| 益阳市| 锡林浩特市| 邻水| 河北省| 长海县| 织金县| 荔波县| 泸州市| 偃师市| 平潭县| 阿坝| 开阳县| 乌拉特后旗| 峨眉山市| 永安市| 荔波县| 奉贤区| 阿图什市| 德阳市| 铜鼓县| 汉沽区| 浦北县| 南汇区| 仙桃市| 包头市| 东港市| 铁力市| 会泽县| 双辽市| 天峨县| 泊头市| 佛冈县| 寻甸| 永安市| 抚州市| 安溪县| 靖西县| 玉屏| 葵青区|