当前位置: 首页 > ds >正文

SpringBoot的基础介绍,用法和配置

为什么会推出一款全新的SpringBoot?

虽然Spring已经取得了非常大的成功,他的优点非常的多,将创建方法的权利给了Spring架构使我们程序员写代码更加的便利。

但是Spring也有很多的缺点:

  • 配置麻烦,而且很多都是模板化的配置
  • 需要依赖很多的jar 例如web层依赖jackson组件,需要我们自己加入依赖. 版本也有可能不匹配,一旦我们加入错误的jar包或者版本不匹配的话就会报错

所以,基于以上缺点,SpringBoot横空出世,它的出现不是为了取代Spring,而是为了解决Spring的问题,是为了简化Spring的搭建。

Spring Boot 以约定大于配置的核心思想,从而使开发人员不再需要定义样 板化的配置。它集成了大量常用的第三方库配置。(例如 Redis,RocketMQ,Quartz 等等),Spring Boot 应用中第三方库几乎可以零配置的开箱即用,通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域成为领导 者。

所谓约定大于配置就是在开发人员圈子中大家公认要做的事情,比如我们要手动开启Spring事务管理,但是这是一个项目必须要做的,所以SpringBoot就帮我们完成了

SpringBoot 开发环境构建

创建一个普通的 maven 项目
在 pom.xml 文件中添加以下配置
<!--依赖的父级工程-->
<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内部集成了一个maven服务器,我们只需要启动启动类就可以,一个SpringBoot应用就是一个独立的服务。
Spring Boot 配置文件
Spring Boot 使 用 一 个 全 局 的 配 置 文 件 ( 配 置 文 件 名 是 固 定 的 , 必 须 为
application),用来存储项目中需要用到的各种配置参数.
配置文件格式有两种,一种为 properties 格式,一种 yaml 格式.
application.properties 属性文件格式,内容为键值对
server.port=8080
properties 格式比较简单,没有什么难度,在此我们以第二种 yaml 格式为例
可以看到yaml中的格式有严格的分级意识,最大的一级定格写,他的字节则往后空两个以此类推
以及我们在给配置赋值的时候必须空一格

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>
在 application.yml 中配置数据源信息

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 整合阿里数据源

导入阿里数据源 jar
        <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>
在 yml 文件中注册阿里数据库连接池
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5 初始化时建立物理连接的个数
maxActive: 20 最大连接池数量
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>

在 application.yml 中配置数据源信息:
mybatis:
type-aliases-package: com.ff.cms.bean
mapper-locations: classpath:mapper/*Mapper.xml
configuration:
map-underscore-to-camel-case: true
cache-enabled: true
启动类上添加@MapperScan("接口所在的包地址")@MapperScan("接口所在
的包地址")

SpringBoot 统一异常处理

我们在代码的过程中,难免会出现有的程序会抛出异常,我们一般都是用try chatch的方式捕获或者直接throw抛出不管。不管是那种方式都太过的繁琐和麻烦,而解决这一问题,统一的异常处理就是一个不错的选择。

Springboot 对 于 异 常 的 处 理 也 做 了 不 错 的 支 持 , 它 提 供 了 一
个 @RestControllerAdvice 注解以及 @ExceptionHandler 注解,前者是用来
开启全局的异常捕获,后者则是说明捕获哪些异常,对那些异常进行处理。
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 异常处理
*/
@ExceptionHandler(Exception.class)
public CommonResult globalException(Exception e) {
CommonResult commonResult = new CommonResult(500,e.getMessage());
return commonResult;
}
}

SpringBoot 定时任务

在项目中经常会有一些功能需要在特定的时间完成特定的操作,这时就需要用到定时器。

开启定时器有两种办法:

  1. 使用 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中提供的定时任务

在 SpringBoot 的启动类上声明 @EnableScheduling
@Component
public class TestTask {
@Scheduled(cron = "*/6 * * * * ?")
private void process() {
System.out.println("现在时间:" + new Date());
}
}

http://www.xdnf.cn/news/19638.html

相关文章:

  • 解锁Git仓库瘦身秘籍,git-sizer真香警告
  • GitHub 宕机自救指南:应急解决方案与替代平台
  • 复刻elementUI的步骤条Steps
  • 机器翻译:python库translatepy的详细使用(集成了多种翻译服务)
  • Redis 核心概念解析:从渐进式遍历、数据库管理到客户端通信协议
  • 自由学习记录(91)
  • C++“类吸血鬼幸存者”游戏制作的要点学习
  • 计算机毕设推荐:基于python的农产品价格数据分析与预测的可视化系统的设计与实现 基于Python农产品管理系统【源码+文档+调试】
  • 前后端联合实现多个文件上传
  • Java全栈开发面试实录:从基础到微服务架构的深度解析
  • Python 基础综合与实践教案:密码验证、循环、分支条件、图形绘制
  • ReconDreamer++
  • Polkadot - ELVES
  • 你的数据是如何被保护的?
  • 解决浏览器的**混合内容安全策略**(Mixed Content Security Policy)带来的无法访问页面
  • 联合体Union
  • Backroom:信息代币化 AI 时代数据冗杂的解决方案
  • 【系统分析师】高分论文:论原型法及其在系统开发中的应用
  • 【Proteus仿真】按键控制系列仿真——LED灯表示按键状态/按键控制LED灯/4*4矩阵键盘控制LED
  • 部署在windows的docker中的dify知识库存储位置
  • NMOS概述
  • python---类.函数名(self) 和 self.函数名()的调用方式
  • 数据结构 二叉树
  • RocketMQ5.0+保姆级单点Docker部署教程
  • 暴力破解基础知识(一)
  • 深入解析 Oracle 并发与锁机制:高并发环境下的数据一致性之道
  • 【数论】P10558 [ICPC 2024 Xi‘an I] XOR Game|普及+
  • 深度学习导论:从理论起源到前沿应用与挑战
  • Halcon学习--(1)常用算子
  • 大模型RAG项目实战:向量数据库Faiss