SpringBoot
一 Spring Boot入門
1 簡介

![### [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1DQpGzYC-1626958497356)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1625753316056.png)]](https://img.uj5u.com/2021/07/25/249514250735412.png)
2.微服務
一個應用應該是一組小型服務:可以通過HTTP的方式進行互通;
每個功能元素最終都是一個可獨立替換和獨立升級的軟體單元
3. Hello World
①創建Maven 工程(Jar)
② 匯入SpringBoot相關 依賴
③撰寫一個主程式; 啟動 Spring Boot 應用
@SpringBootApplication 注解加到類上. 來標注這是一個Spring Boot應用

④ 撰寫相關的Controller , Service
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UnbGhlbV-1626958497360)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1625755396911.png)]](https://img.uj5u.com/2021/07/25/249514250735414.png)
⑤簡化部署
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-K3FaPrwK-1626958497362)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1625755906549.png)]](https://img.uj5u.com/2021/07/25/249514250735415.png)
4. Hello World 深究
①父專案
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ey6GLVJQ-1626958497363)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1625756284065.png)]](https://img.uj5u.com/2021/07/25/249514250735416.png)
②啟動器
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LSOCWRyX-1626958497364)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1625757288202.png)]](https://img.uj5u.com/2021/07/25/249514250735417.png)
③主程式類,主入口類
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-x3nNZrig-1626958497365)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1625759209598.png)]](https://img.uj5u.com/2021/07/25/249514250735418.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-R0KTu4B9-1626958497366)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1625759257041.png)]](https://img.uj5u.com/2021/07/25/249514250735419.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-R3upsupA-1626958497367)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1625759335972.png)]](https://img.uj5u.com/2021/07/25/2495142507354110.png)

5. 使用Spring Initializer快速創建Spring Boot 專案
IDEA 都支持使用 Spring的專案創建向導快速創建一個Spring Boot專案;
選擇我們需要的模塊;向導會聯網創建Spring Boot 專案;
默認生成的Spring Boot專案:
*主程式已經生成好了,我們只需要我們自己的邏輯
resources 檔案夾中目錄結構
? static: 保存所有靜態資源: js css images;
? templates: 保存所有的模板頁面;(Spring Boot 默認 jar包使用嵌入式的Tomcat,默認不支持JSP頁面); 可以使用模板引擎(freemarker, thymeleaf)
? *application. properties: Spring Boot 應用的組態檔; 可以修改一些默認設定;
二.組態檔
1.組態檔
Spring Boot 使用一個全域的組態檔,組態檔名是固定的,
-
appliction.properties
-
ppliction.yml
組態檔的作用:
修改Spring Boot自動配置的默認值;Spring Boot在底層都給我們自動配置好
配置型別
YAML (YAML Alin’t Markup Language)
? YAML Amarkup Language; 是一個標記語言
? YAML isn’t Markup Language: 不是一個標記語言
配置例子
? YAML:
server:
port:8081
XML:
<server>
<port>8081</port>
</server>
2.YAML 語法
①基本語法
k:(空格)v 表示一對鍵值對(空格必須用);
? 以空格的縮進來控制層級關系; 只要是左對齊的一類資料,都是同一層級的
server:
port: 8081
path: /hello
屬性和值也是大小寫敏感的;
②值的寫法
? 字面量:普通值(數字,字串,布爾)
? k: v 字面直接來寫
? 字串默認不用加上單引號或者雙引號
? 物件 Map (屬性和值)
k: v 在下一行來寫物件的屬性和值的關系; 注意縮進
物件還是 k: v 的方式
friends:
lastName: zhangsan
age:20
? 行內寫法:
friends:{lastName: zhangsan,age:20}
陣列(List, Set)
? 用 - 值表示陣列中的一個元素
pets:
-Cat
-dog
-pig
? 行內寫法:
pets:{Cat,dog,pig}
3. 組態檔值注入
組態檔
person:
lastName: hello
age: 18
boss: false
birth: 2017/02/15
maps: {k1: v1,k2: 12}
lists:
-lisi
-zhaoliu
dog:
name: 小狗
age: 12
javaBean:
/**
*將組態檔中配置的每一個屬性值,映射到這個組件中
* @ConfigurationProperties:告訴SpringBoot將本類中所有的屬性和組態檔中相關資訊的配置進行系結;
* prefix = "person" 組態檔中哪個下面的所有屬性進行---->映射
* 只有這個組件是容器中@Component的組件,才能容器提供的@ConfigurationProperties功能;
*/
@Component
@ConfigurationProperties(prefix="person")
public class Person{
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
我們可以匯入組態檔處理器,以后撰寫配置就有提示了
<匯入組態檔處理器,組態檔進行系結就會提示>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</<optional>>
</dependency>
@Value 獲取值和@ConfigurationProperties獲取值比較
| ConfigurationProperties | @Value | |
|---|---|---|
| 功能 | 批量注入組態檔中的屬性 | 一個一個指定 |
| 松散系結(松散語法) | 支持 | 不支持 |
| SpEL | 不支持 | 支持 |
| JSR303資料校驗 | 支持 | 不支持 |
三 自動配置原理
1. 加載spring.factories
① 在SpringApplication類構建的時候,有這樣一段初始化代碼:
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-39ii6o6J-1626958497370)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626956487052.png)]](https://img.uj5u.com/2021/07/25/2495142507354112.png)
? ②跟進去往下走
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Hqi63uXu-1626958497371)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626956540639.png)]](https://img.uj5u.com/2021/07/25/2495142507354113.png)
這里發現會通過loadFactoryNames嘗試加載一些FactoryName,然后利用createSpringFactoriesInstances將這些加載到的類名進行實體化, 繼續跟進loadFactoryNames方法:
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AnHKpmho-1626958497372)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626956739071.png)]](https://img.uj5u.com/2021/07/25/2495142507354114.png)
? 發現此處會利用類加載器加載一個檔案: META-INF/spring.factories ,我們知道,ClassLoader默認是從classpath下讀取檔案,因此,SpringBoot會在初始化的時候,加載所有classpath:META-INF/spring.factories檔案,包括jar包當中的,而在Spring的一個依賴包:spring-boot-autoconfigure中,就有這樣的檔案:
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TbEBqKju-1626958497372)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626956773833.png)]](https://img.uj5u.com/2021/07/25/2495142507354115.png)
我們引入的任何第三方啟動器,只要實作自動配置,也都會有類似檔案,
2 讀取自動配置類
? 我們打開spring.factories檔案
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-u1CykTja-1626958497373)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626956819403.png)]](https://img.uj5u.com/2021/07/25/2495142507354116.png)
可以發現以EnableAutoConfiguration介面為key的一系列配置,key所對應的值,就是所有的自動配置類,可以在當前的jar包中找到這些自動配置類:
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IrowrySS-1626958497374)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626956853321.png)]](https://img.uj5u.com/2021/07/25/2495142507354117.png)
? 幾乎涵蓋了現在主流的開源框架 , 我們來看一個我們熟悉的,例如SpringMVC,查看mvc 的自動配置類:

**打開WebMvcAutoConfiguration**

3 默認屬性配置
配置類我們找到了 , 那么這些默認配置的屬性來自哪里呢?
例如 : 我們配置視圖決議器的時候需要配置前綴和后綴 , 那么這些配置在哪配置的呢 ?

通過原始碼發現, 這個配置是從this.mvcProperties.getView()中讀取的 ,this.mvcProperties又是什么呢 ? 我們繼續跟蹤,發現其實就是定義的一個變數

這個變數中又有一個View型別的變數 , 這個變數中配置的就是前綴和后綴
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zGdm6550-1626958497378)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626957004447.png)]](https://img.uj5u.com/2021/07/25/2495142507354122.png)
View中的原始碼如下
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cKsBfL2U-1626958497379)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626957022053.png)]](https://img.uj5u.com/2021/07/25/2495142507354123.png)
可以看到, 默認讀取就是這里的前綴和后綴變數的值 , 默認就是null .
4 覆寫默認屬性配置
如果我們想自己指定視圖的前綴和后綴該如何去做呢 ?
我們再看WebMvcAutoConfiguration這個類的宣告, 發現這個類身上有這么一個注解, 我們之前也使用過 , 引入了二個配置物件 , 所以我們知道下面成員位置的WebMvcProperties這個成員變數 , 就是從這里來的
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ed36wuwb-1626958497379)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626957068660.png)]](https://img.uj5u.com/2021/07/25/2495142507354124.png)
我們再進去看看這兩個配置類 , 配置類身上使用ConfigurationProperties讀取配置,前綴是spring.mvc , 所以如果我們在組態檔中配置spring.mvc前綴開頭的配置 , 是不是就可以將自己配置的資料注入到這個物件的屬性中 !

所以如果想要自己設定視圖前綴和后綴就可以這么配置
激活組態檔
spring:
mvc:
view:
prefix: /WEB-INF/
suffix: .jsp
修改服務器埠 :
server:
port: 10000
四. SpringBoot綜合案例(應用)
1. 環境搭建
1.1 資料庫準備
create database springboot character set utf8 ;
use springboot ;
CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`gender` varchar(5) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(32) DEFAULT NULL,
`qq` varchar(20) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
`username` varchar(20) NOT NULL,
`phone` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_username_uindex` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
INSERT INTO `tb_user` VALUES (1,'黃蓉','女',38,'桃花島','212223390222','huangrong222@qq.com','huangrong','15600003333'),(2,'黃老邪','男',58,'湖北省武漢市','212223390','huanglaoxie@qq.com','huanglaoxie','15872320405'),(3,'小龍女','男',18,'湖北省荊門市','212223390','xiaolongnv@qq.com','xiaolongnv','15600004444'),(7,'楊過','男',30,'揚州','212223390','yangguo@qq.com','yangguo','15600005555');
1.2 創建專案及包結構
創建專案 springboot_demo
1.3 匯入依賴
<?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 http://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>2.3.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!--單元測驗啟動器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--通用mapper啟動器依賴-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!--JDBC啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--web啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--編碼工具包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!--springboot整合redis啟動器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--自動配置連接池-->
<!--<dependency>-->
<!--<groupId>com.alibaba</groupId>-->
<!--<artifactId>druid</artifactId>-->
<!--<version>1.1.12</version>-->
<!--</dependency>-->
</dependencies>
<build>
<plugins>
<!--spring boot maven插件 , 可以將專案運行依賴的jar包打到我們的專案中-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
1. 4 創建啟動類
package com.atguigu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan(basePackages = "com.atguigu.dao")
@EnableTransactionManagement
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
2.資料訪問層
1 撰寫組態檔application.yml
server:
port: 10001
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///springboot
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
type-aliases-package: com.atguigu.pojo
2 撰寫物體類User
package com.atguigu.pojo;
import java.io.Serializable;
@Entity
@Table(name = "tb_user")
public class User implements Serializable {
private Integer id;
private String name;
private String gender;
private Integer age;
private String address;
private String qq;
private String email;
private String username;
private String phone;
3 Mapper介面和映射配置
package com.atguigu.dao;
import com.atguigu.pojo.User;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface UserMapper extends Mapper<User> {
}
4 撰寫測驗代碼
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
@Autowired
private UserMapper userMapper ;
@Test
public void findAll() {
List<User> users = userMapper.selectAll();
System.out.println(users);
}
}
3. 業務層
1 . 編寫介面
public interface UserService {
/**
* 查詢所有用戶資訊
* @return
*/
public List<User> findAll();
}
2 撰寫實作類
package com.atguigu.service.impl;
import com.atguigu.dao.UserMapper;
import com.atguigu.pojo.User;
import com.atguigu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
@Transactional(readOnly = true ,propagation = Propagation.SUPPORTS)
public List<User> findAll() {
return userMapper.selectAll();
}
}
3 撰寫測驗代碼
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void findAll() {
List<User> users = userService.findAll();
System.out.println(users);
}
}
Spring Boot整合單元測驗 , 需要在測驗類上添加二個注解
\1. @RunWith(SpringRunner.class)指定Junit核心運行類
\2. @SpringBootTest 指定這是一個Spring Boot的測驗類, 運行時會自動加載Spring Boot運行環境
4. 表現層
1 引入起步依賴
<!--Web起步依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--編碼工具包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
2 新建工具類
package com.atguigu.utils;
import java.io.Serializable;
public class Result implements Serializable {
private boolean status ; //回應狀態 true false
private String msg ; // 回應資訊
private Object data ; //處理成功的回應資料
public static Result ok(Object data){
Result result = new Result();
result.setStatus(true);
result.setData(data);
return result ;
public static Result error(String msg){
Result result = new Result();
result.setStatus(false);
result.setMsg(msg);
return result ;
}
// 生成set get tostring方法
}
3 撰寫表現層代碼
@Controller
@RequestMapping(path = "/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 查詢所有用戶資訊
* @return
*/
@RequestMapping(path = "/findAll")
@ResponseBody
public Result findAll() {
List<User> users = userService.findAll();
return Result.ok(users);
}
}
4 代碼測驗
使用postman進行測驗
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-N7Fr6NPu-1626958497381)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626958054245.png)]](https://img.uj5u.com/2021/07/25/2495142507354126.png)
5. 頁面展示
在resources目錄下創建static目錄 , 將提供的頁面復制進來 , 修改即可 :
- 頁面異步請求的埠和服務器埠一致
- 頁面異步請求訪問的路徑和對應的表現層控制方法路徑要致
- 頁面異步請求引數名稱和和對應的表現層控制方法引數一致
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZaZ31lYJ-1626958497382)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626958083511.png)]](https://img.uj5u.com/2021/07/25/2495142507354127.png)
修改之后, 訪問頁面即可 : localhost:10001/list.html
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ptEjsjMY-1626958497382)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626958111293.png)]](https://img.uj5u.com/2021/07/25/2495142507354128.png)
6. 快取優化
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dQsGx5ai-1626958497383)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626958158051.png)]](https://img.uj5u.com/2021/07/25/2495142507354129.png)
引入起步依賴
<!--springboot整合redis啟動器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
撰寫組態檔
spring:
redis: # 配置redis
host: localhost
port: 6379
修改業務層實作類代碼
package com.atguigu.service.impl;
import com.atguigu.mapper.UserMapper;
import com.atguigu.pojo.User;
import com.atguigu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper ;
@Autowired
private RedisTemplate redisTemplate ;
@Override
@Transactional(readOnly = true ,propagation = Propagation.SUPPORTS)
public List<User> findAll() {
//從快取中查詢資料 規定存盤用戶資訊使用string型別進行存盤, 存盤的key就是userList
List<User> userList = (List<User>) redisTemplate.boundValueOps("userList").get();
//如果快取中沒有資料, 查詢資料庫 , 將查詢到的資料放入快取
if(userList==null){
userList = userMapper.findAll();
redisTemplate.boundValueOps("userList").set(userList);
System.out.println("從資料庫中查詢...");
}else {
System.out.println("從快取中查詢.....");
}
//如果快取中有資料, 直接回傳
return userList ;
}
}
五 Spring Boot專案打包部署(應用)
1. 專案打包
-
在`pom.xml`中配置Spring Boot專案的maven插件
<build>
<plugins>
<!-- 打jar包時如果不配置該插件,打出來的jar包沒有清單檔案 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
-
`運行`maven的打包命令 : package
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xwibl0d1-1626958497384)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626958288423.png)]](https://img.uj5u.com/2021/07/25/2495142507354130.png)
3) 打包之前我們需要跳過測驗 , 如果不跳過測驗那么我們撰寫的測驗類都會被maven自動執行, 可能會出現錯誤,導致打包不成功

4)執行之后可以在控制臺看到打包的日志資訊, 其中有生成的包的位置
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eGICdR2J-1626958497385)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626958343724.png)]](https://img.uj5u.com/2021/07/25/2495142507354132.png)
打開指定目錄就可以發現有一個jar包存在 , 仔細觀察其實我們會發現 , 在target目錄下其實會存在二個jar包 , 一個是springboot_02-1.0-SNAPSHOT.jar一個是springboot_02-1.0-SNAPSHOT.jar.original , 那么這兩個jar包有什么區別呢?
我們如果是普通專案打包那么就只會得到一個jar包 , 這個jar包中不包含專案的一些依賴jar包
但是我們現在是一個Spring Boot專案 , 我們希望打完的包能夠直接運行, 所以專案中就必須包含他的依賴jar包 , 我們之前在pom.xml中配置一個Spring Boot的maven插件可以在普通包的基礎上將我們專案的一些運行及依賴資訊打進jar包里面 , 打完包之后將原來的普通包改名為xxx.jar.original , 新打的包為xxx.jar .
-
==簡單總結一下== :
.jar.original 是普通jar包,不包含依賴
? .jar 是可執行jar包,包含了pom中的所有依賴,可以直接用java -jar 命令執行
? 如果是部署,就用.jar , 如果是給別的專案用,就要給.jar.original這個包
· 專案運行
打開命令列運行打出來的包;使用命令:java –jar ``包全名
java -jar springboot_02-1.0-SNAPSHOT.jar
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/289857.html
標籤:java
上一篇:Spring 學習以及總結(一)
