為什么會推出一款全新的SpringBoot?
雖然Spring已經取得了非常大的成功,他的優點非常的多,將創建方法的權利給了Spring架構使我們程序員寫代碼更加的便利。
但是Spring也有很多的缺點:
- 配置麻煩,而且很多都是模板化的配置
- 需要依賴很多的jar 例如web層依賴jackson組件,需要我們自己加入依賴. 版本也有可能不匹配,一旦我們加入錯誤的jar包或者版本不匹配的話就會報錯
所以,基于以上缺點,SpringBoot橫空出世,它的出現不是為了取代Spring,而是為了解決Spring的問題,是為了簡化Spring的搭建。
Spring Boot 以約定大于配置的核心思想,從而使開發人員不再需要定義樣 板化的配置。它集成了大量常用的第三方庫配置。(例如 Redis,RocketMQ,Quartz 等等),Spring Boot 應用中第三方庫幾乎可以零配置的開箱即用,通過這種方式,Spring Boot 致力于在蓬勃發展的快速應用開發領域成為領導 者。
所謂約定大于配置就是在開發人員圈子中大家公認要做的事情,比如我們要手動開啟Spring事務管理,但是這是一個項目必須要做的,所以SpringBoot就幫我們完成了
SpringBoot 開發環境構建
<!--依賴的父級工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/>
</parent>
<!--指定 jdk 版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<!--添加基本的 springweb 依賴-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!--打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.6</version>
</plugin>
</plugins>
</build>
@SpringBootApplication
public class NewsApplication {
public static void main(String[] args) {
SpringApplication.run(NewsApplication.class);
}
}




SpringBoot 數據訪問管理
首先為了鏈接數據庫我們需要導入jdbc的jar包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
還有mysql的驅動:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency>
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
SpringBoot 整合阿里數據源
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/newsdb?serverTimezone=Asia/Shanghaiusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceinitialSize: 5 #初始化時建立物理連接的個數maxActive: 20 #最大連接池數量main:allow-circular-references: true #開始支持spring循環依賴redis:host: 127.0.0.1port: 6379password:database: 0pool:max-active: 8 # 連接池最大連接數(使用負值表示沒有限制)max-wait: -1ms # 連接池最大阻塞等待時間(使用負值表示沒有限制)max-idle: 8 # 連接池中的最大空閑連接min-idle: 0 # 連接池中的最小空閑連接timeout: 5000ms # 連接超時時間(毫秒)
SpringBoot 集成 mybatis
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
mybatis:
type-aliases-package: com.ff.cms.bean
mapper-locations: classpath:mapper/*Mapper.xml
configuration:
map-underscore-to-camel-case: true
cache-enabled: true

SpringBoot 統一異常處理
我們在代碼的過程中,難免會出現有的程序會拋出異常,我們一般都是用try chatch的方式捕獲或者直接throw拋出不管。不管是那種方式都太過的繁瑣和麻煩,而解決這一問題,統一的異常處理就是一個不錯的選擇。
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 異常處理
*/
@ExceptionHandler(Exception.class)
public CommonResult globalException(Exception e) {
CommonResult commonResult = new CommonResult(500,e.getMessage());
return commonResult;
}
}
SpringBoot 定時任務
在項目中經常會有一些功能需要在特定的時間完成特定的操作,這時就需要用到定時器。
開啟定時器有兩種辦法:
- 使用 java 自帶的 TimerTask,Timer
我們需要創建一個TimerTask對象,重寫里面的run方法。
創建一個Timer計時器對象,調用里面的schedule方法來啟動定時任務,
public static void main(String[] args) {
// 定義一個任務
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("打印當前時間:" + new Date());
}
};
// 計時器
Timer timer = new Timer();
// 開始執行任務 (延遲 1000 毫秒執行,每 3000 毫秒執行一次)
timer.schedule(timerTask, 1000, 3000);
}
? ? ?2.使用SpringBoot中提供的定時任務
@Component
public class TestTask {
@Scheduled(cron = "*/6 * * * * ?")
private void process() {
System.out.println("現在時間:" + new Date());
}
}