電熱設(shè)備網(wǎng)站建設(shè)/谷歌收錄提交入口
1.什么是SpringBoot
- SpringBoot是由Pivotal團(tuán)隊(duì)提供的一套開(kāi)源框架,可以簡(jiǎn)化spring應(yīng)用的創(chuàng)建及部署。
- SpringBoot是伴隨Spring4.0的時(shí)候發(fā)布的一個(gè)框架。
- SpringBoot用來(lái)簡(jiǎn)化Spring應(yīng)用的開(kāi)發(fā),約定大于配置,去繁從簡(jiǎn)。
從本質(zhì)上來(lái)說(shuō),Spring Boot就是Spring,它做了那些沒(méi)有它你也會(huì)去做的Spring Bean配置。它使用“約定優(yōu)于配置”(項(xiàng)目中存在大量的配置,此外還內(nèi)置了一個(gè)習(xí)慣性的配置,讓你無(wú)需手動(dòng)進(jìn)行配置)的理念讓你的項(xiàng)目快速運(yùn)行起來(lái)。使用Spring Boot很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行(運(yùn)行jar,內(nèi)嵌Servlet容器)、準(zhǔn)生產(chǎn)級(jí)別的基于Spring框架的項(xiàng)目,使用Spring Boot你可以不用或者只需要很少的Spring配置。
框架特點(diǎn)?
- 創(chuàng)建獨(dú)立的spring應(yīng)用。
- 嵌入Tomcat、Jetty,Undertow而且不需要部署他們。
- 提供的“starters"來(lái)簡(jiǎn)化Maven配置。
- 盡可能自動(dòng)配置spring應(yīng)用,絕對(duì)沒(méi)有代碼生成和XML配置需求。
- 提供生產(chǎn)指標(biāo),健壯檢查和外部化配置。
優(yōu)缺點(diǎn)?
優(yōu)點(diǎn)
- 快速創(chuàng)建獨(dú)立運(yùn)行的Spring項(xiàng)目以及主流框架集成
- 使用嵌入式Servlet容器,應(yīng)用無(wú)需打包成war包
- starters自動(dòng)依賴于版本控制
- 大量的自動(dòng)配置,簡(jiǎn)化開(kāi)發(fā),也可修改默認(rèn)值
- 無(wú)需配置xml,沒(méi)有代碼生成,開(kāi)箱即用
- 準(zhǔn)生產(chǎn)化環(huán)境的運(yùn)行時(shí)應(yīng)用監(jiān)控
缺點(diǎn)
- SpringBoot是spring的一個(gè)再封裝,如果不了解spring,那么學(xué)Springboot很費(fèi)勁。
- 入門(mén)易,精通難,它沒(méi)有增強(qiáng)spring的功能,只是幫助我們做了很多本需要我們自己做的配置整合工作。?
微服務(wù)
將子系統(tǒng)拆成一個(gè)一個(gè)的jar包運(yùn)行就是微服務(wù)。Spring Boot算是微服務(wù)開(kāi)發(fā)的入門(mén)級(jí)框架。
?微服務(wù)架構(gòu)示例圖
- 單體應(yīng)用:ALL IN ONE,以前的架構(gòu)風(fēng)格,所有的東西都寫(xiě)在一個(gè)應(yīng)用里面。
- 微服務(wù):一個(gè)應(yīng)用是一組小型服務(wù)。每一個(gè)服務(wù)通過(guò)http的方式進(jìn)行互通,每個(gè)功能元素最終都是一個(gè)可獨(dú)立替換和獨(dú)立升級(jí)的軟件單元。?
?能用單體應(yīng)用開(kāi)發(fā)的應(yīng)用,盡量不用微服務(wù)。
- 比如個(gè)人開(kāi)發(fā)項(xiàng)目單體應(yīng)用足夠了,微服務(wù)成本比較大,一般企業(yè)級(jí)應(yīng)用用的比較多。
- 微服務(wù)就是一種架構(gòu)風(fēng)格,掌握還是必要的。
2.簡(jiǎn)單案例
創(chuàng)建Springboot項(xiàng)目
?選擇需要的依賴:配置依賴有詳細(xì)說(shuō)明,因?yàn)檫€要一些其他的依賴,這里不配置也行,直接在pom.xml配置
配置依賴?
<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.xygalaxy</groupId><artifactId>SpringBoot-Study</artifactId><version>0.0.1-SNAPSHOT</version><name>SpringBoot-Study</name><description>SpringBoot-Study</description><properties><java.version>17</java.version></properties><dependencies><!-- Spring Web依賴,主要提供SpringMVC相關(guān) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 熱部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!-- springboot依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- springboot測(cè)試依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>RELEASE</version><scope>compile</scope></dependency><!-- MybatisPlus依賴 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.5</version></dependency><!-- 連接數(shù)據(jù)庫(kù)依賴 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.34</version></dependency><!-- lombok簡(jiǎn)化實(shí)體 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>RELEASE</version><scope>compile</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>16</source><target>16</target></configuration></plugin></plugins></build></project>
MVC分層
創(chuàng)建實(shí)體類
@Data
@TableName("student")
public class StudentPO {@TableId(value = "id",type = IdType.ASSIGN_ID)private Long id;@TableField(value = "name")private String name;@TableField(value = "age")private Integer age;@TableField(value = "email")private String email;@TableField(value = "sex")private String sex;@TableField(value = "version")@Versionprivate Integer version;@TableField("is_delete")@TableLogic(value = "0",delval = "1")private Integer isDelete = 0;
}
創(chuàng)建Mapper接口
@Mapper
public interface StudentMapper extends BaseMapper<StudentPO> {}
創(chuàng)建Service接口和實(shí)現(xiàn)類
接口
public interface IStudentService extends IService<StudentPO> {}
實(shí)現(xiàn)類
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, StudentPO> implements IStudentService {}
創(chuàng)建Controller
@RestController
@RequestMapping("/student")
public class StudentController {@Autowiredprivate StudentServiceImpl studentService;@RequestMapping("/list")public List<StudentPO> userList(){return studentService.list();}}
啟動(dòng)類配置
@SpringBootApplication
@MapperScan("com.test.mapper")
public class SpringBootStudyApplication {public static void main(String[] args) {SpringApplication.run(SpringBootStudyApplication.class, args);}}
application.yml配置
主要配置數(shù)據(jù)庫(kù)和開(kāi)啟MyBatis-Plus的日志功能
# 配置訪問(wèn)端口
server:port: 8080# 數(shù)據(jù)源配置
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8username: rootpassword: 123456# 開(kāi)啟日志
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:table-prefix: test.
測(cè)試
啟動(dòng)類運(yùn)行,瀏覽器訪問(wèn)
http://localhost:8080/student/list
// 或者
http://127.0.0.1:8080/student/list
3.配置文件
全局配置文件
SpringBoot的有兩種格式的全局配置文件,使用任何一個(gè)功能都是一樣的,配置文件名是固定的(放在resources目錄下)。
- application.properties:默認(rèn)Spring initializr默認(rèn)自動(dòng)生成的配置文件,也是我們屬性的文件格式。
- application.yml:除了properties文件可以做為SpringBoot的配置文件以外,SpringBoot還支持yaml配置文件。
?
配置文件的作用
修改SpringBoot項(xiàng)目配置的默認(rèn)值。
- SpringBoot在底層都給我們自動(dòng)配置好了默認(rèn)值,如果想改就需要使用配置文件修改配置即可。
- 約定大于配置的體現(xiàn)就是SpringBoot已經(jīng)幫我們配置了所需的配置默認(rèn)值,只是我們不想用默認(rèn)值可以通過(guò)配置文件修改。
properties配置語(yǔ)法?
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
YAML語(yǔ)法
- YAML(又稱為 “Yet Another Markup Language”)是一種可讀的數(shù)據(jù)序列化格式。它的設(shè)計(jì)目標(biāo)是簡(jiǎn)潔、易讀、易于編寫(xiě),并可以被各種編程語(yǔ)言解析和生成。
- YAML不是標(biāo)記語(yǔ)言,它的主要擁堵是作為配置文件和數(shù)據(jù)傳輸?shù)母袷健?/li>
- YAML的文件通常使用“.yaml"或".yml"的文件擴(kuò)展名來(lái)標(biāo)識(shí)文件的格式。這兩種擴(kuò)展名沒(méi)有實(shí)質(zhì)的差別,只是簡(jiǎn)單的表示文件使用YAML格式進(jìn)行編寫(xiě)。
?語(yǔ)法格式
- 基本格式: key: value 表示一對(duì)鍵值對(duì),注意:鍵值對(duì)中的值前面必須有空格,多少個(gè)無(wú)所謂,但必須有。
- 靠鍵左對(duì)齊來(lái)區(qū)分層級(jí)關(guān)系,也就是說(shuō)凡是左對(duì)齊的鍵值對(duì)都是一個(gè)層次的
- 大小寫(xiě)敏感,嚴(yán)格區(qū)分大小寫(xiě)
- #進(jìn)行注釋
值寫(xiě)法?
- 字符串默認(rèn)不用引號(hào)引起來(lái)。
- 對(duì)象或Map的表示方法有兩種,一種是換行+縮進(jìn),另一種是利用大括號(hào)
- 數(shù)組或List集合也有兩種表達(dá)方式
YAML案例?
等價(jià)于properties配置文件配置數(shù)據(jù)庫(kù)
# 數(shù)據(jù)源配置
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8username: rootpassword: 123456