Java SpringBoot高級(jí)用法詳解
1,IDEA中Lombok作用

數(shù)據(jù)庫(kù): 庫(kù) 表 字段 對(duì)應(yīng)的值 user表(id,name,age)
實(shí)體對(duì)象pojo: 用來(lái)封裝數(shù)據(jù)庫(kù)中的數(shù)據(jù) User類(id,name,age)
實(shí)體對(duì)象方法: Get/Set/toString/無(wú)參構(gòu)造/有參構(gòu)造/equals/hashcode
lombok作用: 自動(dòng)生成上述的方法.
創(chuàng)建項(xiàng)目

依賴的版本 2.4.1、
2.pom.xml說(shuō)明
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 該配置表示Maven坐標(biāo) -->
<!-- 項(xiàng)目的組id -->
<groupId>com.jt</groupId>
<!-- 項(xiàng)目名稱 -->
<artifactId>springboot_demo1</artifactId>
<!-- 項(xiàng)目版本號(hào) -->
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.4.1</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<!-- SpringBoot的啟動(dòng)項(xiàng) wep 相當(dāng)于引入MVC框架
思想:"開(kāi)箱即用"?。。?
說(shuō)明: 只需要引入jar包,簡(jiǎn)單的配置即可以使用該功能
-->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!--相當(dāng)于繼承了一個(gè)父級(jí)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<!--通過(guò)pom標(biāo)識(shí) 是一個(gè)父級(jí) -->
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<mainClass>com.jt.SpringbootDemo1Application</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2.1 pom.xml標(biāo)簽說(shuō)明
說(shuō)明: 該坐標(biāo)在本地倉(cāng)庫(kù)中是唯一標(biāo)識(shí)符.是當(dāng)前項(xiàng)目打包/被依賴的唯一 路徑.
根據(jù)坐標(biāo)查找jar包
擴(kuò)展: 如果項(xiàng)目中依賴第三方j(luò)ar包文件報(bào)錯(cuò)! 如何處理?
問(wèn)題說(shuō)明: 有時(shí)根據(jù)坐標(biāo)下載jar包文件時(shí),可能由于網(wǎng)絡(luò)問(wèn)題,導(dǎo)致jar包下載不完整.
解決方案: 根據(jù)第三方的坐標(biāo),查找到本地倉(cāng)庫(kù)的位置,之后刪除 重新下載.
- 默認(rèn)條件下 jar包
- web項(xiàng)目可以打成 war包
- 如果該項(xiàng)目是父級(jí)項(xiàng)目 則寫(xiě) pom
通過(guò)dependencyManagement標(biāo)簽統(tǒng)一定義父級(jí)工程,在其中定義了 springBoot項(xiàng)目所有兼容的版本信息.
所以依賴項(xiàng)中不需要添加版本號(hào),也可以正常依賴jar包文件
2.2 依賴的相關(guān)說(shuō)明
思想: “開(kāi)箱即用” 是springBoot設(shè)計(jì)的核心 越來(lái)越簡(jiǎn)單!!!
什么是啟動(dòng)項(xiàng): SpringBoot為整合第三方框架,寫(xiě)了啟動(dòng)項(xiàng)的jar包文件, 其中官方已經(jīng)將所有的配置信息/需要依賴的jar包文件提前測(cè)試并且定義.
說(shuō)明: maven中的jar包是有依賴的傳遞性
例如: A項(xiàng)目依賴B.jar包, B.jar依賴C.jar. 在項(xiàng)目中,只需要添加B.jar. 則B/C.jar都會(huì)自動(dòng)添加.
實(shí)際應(yīng)用: 如圖web.jar包中依賴了很多其它的第三方j(luò)ar包文件.
mavenjar包查詢網(wǎng)址: https://mvnrepository.com/
本地倉(cāng)庫(kù)文件說(shuō)明:
1. 當(dāng)maven開(kāi)始解析項(xiàng)目的POM.xml文件時(shí),根據(jù)依賴的坐標(biāo),找到指定的 jar包文件.之后添加該依賴.
2. 之后掃描當(dāng)前文件中的 xxx.pom文件.
3. 掃描pom.xml文件中的依賴信息dependency
4. 根據(jù)dependency的坐標(biāo) 重復(fù)執(zhí)行上述的操作.直到所有的依賴都添加完 成.
需求: 網(wǎng)絡(luò)數(shù)據(jù)傳輸,一般都需要進(jìn)行加密處理.maven中采用SHA1數(shù)字簽 名的加密算法,保證數(shù)據(jù)傳遞的有效性!!!
說(shuō)明: maven數(shù)據(jù)傳遞有效性原理圖.

2.3 SHA1介紹
SHA-1(英語(yǔ):Secure Hash Algorithm 1,中文名:安全散列算法1)是一種密碼散列函 數(shù),美國(guó)國(guó)家安全局設(shè)計(jì),并由美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NIST)發(fā)布為聯(lián)邦數(shù)據(jù)處理 標(biāo)準(zhǔn)(FIPS)。SHA-1可以生成一個(gè)被稱為消息摘要的160位(20字節(jié))散列值,散列 值通常的呈現(xiàn)形式為**40個(gè)十六進(jìn)制數(shù)**。
關(guān)鍵字: 數(shù)字證書(shū).
問(wèn)題1: 常見(jiàn)hashcode值 有多少位16進(jìn)制數(shù)組成??? 8位
問(wèn)題2: 8位16進(jìn)制數(shù),有多少種排列組合? 2^32種
00000000-FFFFFFFF
問(wèn)題3: 相同數(shù)據(jù)進(jìn)行hash(算法相同),問(wèn)題: 值是否相同? 必定相同
問(wèn)題4: 不同數(shù)據(jù)進(jìn)行hash(算法相同),問(wèn)題: 值是否相同? 可能相同 hash碰撞
問(wèn)題5: 一個(gè)數(shù)據(jù)1kb, 一個(gè)數(shù)據(jù)ITB 問(wèn): hash計(jì)算的速度誰(shuí)快? “一樣快” hash本質(zhì)
SpringBoot高級(jí)用法
Pro文件說(shuō)明
- pro文件語(yǔ)法
- 數(shù)據(jù)結(jié)構(gòu)類型: key=value 特別注意不要有空格.
- 字符集編碼: 程序讀取文件時(shí),默認(rèn)采用ISO-8859-1編碼
- 弊端: 所有的key都必須寫(xiě)完整,不能縮進(jìn)
YML文件說(shuō)明
YML文件的語(yǔ)法
- 數(shù)據(jù)結(jié)構(gòu) key-value結(jié)構(gòu)
- 寫(xiě)法: key:(空格)value
- 層級(jí)代碼結(jié)構(gòu),注意縮進(jìn)
- 字符集 文件讀取時(shí),默認(rèn)采用UTF-8編碼 可以寫(xiě)中文
server:
port: 8080
3.需求說(shuō)明
說(shuō)明: 有時(shí)將數(shù)據(jù)寫(xiě)死,不方便后續(xù)擴(kuò)展,需要為屬性動(dòng)態(tài)賦值.
解決方案: 有些數(shù)據(jù)是后臺(tái)特有的.一般可以將數(shù)據(jù)寫(xiě)到配置文件中,之后 為屬性動(dòng)態(tài)賦值
編輯YML
#YML文件的語(yǔ)法 #1,數(shù)據(jù)結(jié)構(gòu) key-value結(jié)構(gòu) #2,寫(xiě)法: key:(空格)value #3,層及代碼結(jié)構(gòu),注意縮進(jìn) #4,字符集 文件讀取時(shí),默認(rèn)采取UTF-8編碼 可以寫(xiě)中文 # 規(guī)則: 命名時(shí)最好指定前綴. server: port: 8080 # 指定業(yè)務(wù)的key mysql: Username: root| Password: root||
啟動(dòng)類
package com.jt;
//import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//import org.springframework.web.bind.annotation.RequestMapping;
@SpringBootApplication
public class SpringbootDemo1Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemo1Application.class, args);
}
}
動(dòng)態(tài)為屬性賦值
package com.jt.contraller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 說(shuō)明:
* 1.將該類交給Spring容器管理
* 2.SpringMVC負(fù)責(zé)調(diào)用該對(duì)象接收用戶的請(qǐng)求.
* 3.將業(yè)務(wù)處理之后的結(jié)果,為頁(yè)面返回JSON數(shù)據(jù).
* @ResponseBody作用: 將數(shù)據(jù)轉(zhuǎn)化為JSON串
*/
@RestController
public class JDBCController {
//${key} Spring提供的springel表達(dá)式 簡(jiǎn)稱為:spel表達(dá)式
//語(yǔ)法: 從spring容器內(nèi)部獲取key,動(dòng)態(tài)為屬性賦值.
@Value("${mysql.username}")
String username; // = "root|";
@Value("${mysql.password}")
String password; // = "root";
@RequestMapping("/getMsg")
public String getMsg() {
return "你好數(shù)據(jù)庫(kù):" + username + password;
}
}
3.2利用properties文件為屬性賦值
YML文件是SpringBoot的核心配置文件,一般主要用來(lái)整合其它第三方框架.屬于系統(tǒng)配置文件.如果將大量的業(yè)務(wù)數(shù)據(jù)寫(xiě)到系統(tǒng)配置文件中. 耦合性高. 所以將業(yè)務(wù)數(shù)據(jù)最好放到pro文件中.
配置 pro 文件
#默認(rèn)ISO-8859-1 中文必定亂碼 mysql.username2=mysql數(shù)據(jù)庫(kù) mysql.password2=你猜猜
為屬性賦值
package com.jt.contraller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 說(shuō)明:
* 1.將該類交給Spring容器管理
* 2.SpringMVC負(fù)責(zé)調(diào)用該對(duì)象接收用戶的請(qǐng)求.
* 3.將業(yè)務(wù)處理之后的結(jié)果,為頁(yè)面返回JSON數(shù)據(jù).
* @ResponseBody作用: 將數(shù)據(jù)轉(zhuǎn)化為JSON串
*
* propertySource: value屬性指定路徑
* encoding屬性指定配置文件編碼格式
*/
@RestController
@PropertySource(value="classpath:/mysql.properties",encoding = "UTF-8")
public class JDBCContraller {
/**
* 難點(diǎn): 如何將pro文件交給Spring容器管理????
* 解決方案: @PropertySource("xxxxxx/xxx.properties") 指定配置文件交給Spring
* 容器管理
*/
@Value("${mysql.username2}")
private String username2;
@Value("${mysql.password2")
private String password2;
@RequestMapping("/getMsg2")
public String getMsg2(){
return "你好數(shù)據(jù)庫(kù):"+ username2 +password2;
}
}
結(jié)構(gòu)

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
- Springboot Thymeleaf模板文件調(diào)用Java類靜態(tài)方法
- Java之SpringBoot自定義配置與整合Druid
- java編程之基于SpringBoot框架實(shí)現(xiàn)掃碼登錄
- Java Springboot的目的你知道嗎
- Java SpringBoot快速集成SpringBootAdmin管控臺(tái)監(jiān)控服務(wù)詳解
- Java SpringBoot開(kāi)發(fā)小技巧詳解
- Java SpringBoot+vue+實(shí)戰(zhàn)項(xiàng)目詳解
- Java基礎(chǔ)總結(jié)之Thymeleaf詳解
- Java基礎(chǔ)之Thymeleaf的簡(jiǎn)單使用
- Java之SpringBoot-Thymeleaf詳情
相關(guān)文章
springcloud之自定義簡(jiǎn)易消費(fèi)服務(wù)組件
這篇文章主要介紹了springcloud之自定義簡(jiǎn)易消費(fèi)服務(wù)組件,本篇來(lái)使用rest+ribbon消費(fèi)服務(wù),并且通過(guò)輪詢方式來(lái)自定義了個(gè)簡(jiǎn)易消費(fèi)組件,感興趣的小伙伴們可以參考一下2018-06-06
jcl與jul?log4j1?log4j2?logback日志系統(tǒng)機(jī)制及集成原理
這篇文章主要介紹了jcl與jul?log4j1?log4j2?logback的集成原理,Apache?Commons-logging?通用日志框架與日志系統(tǒng)的機(jī)制,有需要的朋友可以借鑒參考下2022-03-03
mybatis查詢返回Map<String,Object>類型的講解
這篇文章主要介紹了mybatis查詢返回Map<String,Object>類型的講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
SpringBoot使用AOP實(shí)現(xiàn)日志記錄功能詳解
這篇文章主要為大家介紹了SpringBoot使用AOP實(shí)現(xiàn)日志記錄功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Netty開(kāi)發(fā)及粘包實(shí)戰(zhàn)解決分析
這篇文章主要為大家介紹了Netty開(kāi)發(fā)及粘包實(shí)戰(zhàn)解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02
SpringSecurity之SecurityContextHolder使用解讀
這篇文章主要介紹了SpringSecurity之SecurityContextHolder使用解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03

