为什么会推出一款全新的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());
}
}