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