springboot基础篇(快速入门+要点总结)

news2024/12/26 11:57:56

目录

一、SpringBoot简介

二、创建SpringBoot(通过Idea脚手架搭建项目)

三、properties配置文件

 properties 配置文件说明

①. properties 基本语法

②. 读取配置⽂件

③. properties 缺点

2. yml 配置⽂件说明

①. yml 基本语法

②. yml 使用进阶

四、日志框架

在程序中得到日志对象

使用日志对象打印日志

日志级别 

日志持久化


一、SpringBoot简介

在开始了解Spring Boot之前,需要先了解Spring,因为Spring Boot的诞生是和Spring息息相关的,Spring Boot是Spring发展到一定程度的产物,但是Spring Boot并不是spring的替代品,Spring Boot是为了让程序员根号的使用Spring而产生的。Spring Boot称之为搭建程序的脚手架,最主要的作用就是帮助我们快速搭建庞大的spring项目,进而减少一些xml的配置,做到开箱即用的效果。

Spring Boot的优势

  • 快速集成框架,Spring Boot提供了添加启动依赖功能,用于快速使项目集成各种框架。

  • 内置tomcat容器,无需配置web容器,直接运行和部署程序。

  • 快速部署项目,无需外部容器,打成jar包,快速启动运行项目。

  • 不需要繁琐的xml配置,使用注解和配置的方式快速开发。

二、创建SpringBoot(通过Idea脚手架搭建项目)

现在我们来说一下,如何在Idea上直接搭建SpringBoot项目:

1. 在左侧列表选择Spring Initializer,代表这是一个Spring Boot项目

2. 项目来源地址,因为spring是国外的服务器,所以我们通常使用阿里云的网站来搭建会快一点。

3. 点击设置,更改URL为:https://start.aliyun.com/

然后输入我们的项目名称Name,还有一个Java版本,打包类型,然后点击Next

1. 选择Spring Boot项目,由于这是国内镜像,阿里云的版本一般比官网低一点

2. 同样,我们在搜索框里搜索我们需要添加的依赖,比如说这里添加一个web依赖。然后直接点击Finish

点击Finish之后会直接打开我们刚刚创建的项目,可以看到这里还加了一个demo给我们,

OK,我们直接运行,出现下面页面也是代表我们构建运行项目成功。

热部署:

根据上面的步骤,我们已经完成了 Spring Boot项目的创建和运行,但是有一个问题就是,每次修改代码后都需要重新启动代码才会生效,可以配置热部署来解决这个问题。

热部署的配置如下:

这样修改对于我们修改web资源,可以立即生效,对于修改java代码,部分生效 

三、properties配置文件

配置文件作用:

整改项目中所有重要的数据都在配置文件中配置的,比如:

  • 数据库的连接信息(包含用户名和密码的设置)

  • 项目的启动端口

  • 第三方系统的调用密钥信息等

  • 用发现和定位问题的普通日志和异常日志等

配置文件的格式:

.properties
.yml

理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置⽂件格式,这样可以更好的维护(降低故障率)。当 properties 和 yml ⼀起存在⼀个项⽬中时, .properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。

 properties 配置文件说明

properties 配置⽂件是最早期的配置⽂件格式,也是创建 Spring Boot 项⽬默认的配置⽂件。

①. properties 基本语法

properties 是以键值的形式配置的,key 和 value 之间是以 “=” 连接的。

# 配置项⽬端⼝号
server.port=8084
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbname?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

②. 读取配置⽂件

使⽤ @Value 注解来实现。@Value 注解使⽤ “${}” 的格式读取。

@Component
public class ReadYml {
    @Value("${server.port}")
    private String port;
​
    @PostConstruct
    public void postConstruct() {
        System.out.println("Read YML,port:" + port);
    }
}

③. properties 缺点

properties 配置是以 key-value 的形式配置的,properties 配置⽂件中会有很多的冗余的信息。

2. yml 配置⽂件说明

yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。

yml 优点分析:

  • yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。

  • yml ⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。

  • yml ⽀持更多的编程语⾔,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、JavaScript、Perl 中。

①. yml 基本语法

yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略

spring:
  datasource:
    url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
    username: root
    password: root

②. yml 使用进阶

yml 配置不同数据类型及 null

# 字符串
value1: Hello
# 布尔值,true或false
value2: true
value3: false
# 整数
value4: 10
value: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
value5: 3.14159
value6: 314159e-5 # 科学计数法
# Null,~代表null
value7: ~

对于基本数据类型直接 key: value 即可。

yml 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可

@Component
public class ReadYml {
    @Value("${value1}")
    private String hello;
    @PostConstruct
    public void postConstruct() {
        System.out.println("Read YML,Hello:" + hello);
    }
​
}

四、日志框架

日志的作用

日志是程序的重要组成部分,程序在生产环境中报错了,不让你打开控制台看日志,那么你应该怎么查看报错日志呢,因此日志框架对于我们程序员来说至关重要。

日志框架除了发现和定位问题之外,还可以通过日志实现如下功能;

  • 记录用户的登录日志,方便分析用户是正常登录还是恶意破解的用户。

  • 记录系统的操作日志,方便数据回复和定位操作人。

  • 记录程序的执行时间,方便优化程序提供数据支持。

日志怎么用??

Spring Boot 项目在启动的时候默认就有日志输出,如下图所示

1.Spring Boot 内置了日志框架(不然也输出不了日志)。

2.默认情况下,输出的日志并非是开发者定义和打印的,那开发者怎么在程序中自定义打印日志呢?

3.日志默认是打印在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢? 

在程序中得到日志对象

在程序中获取日志对象需要使用日志工厂 LoggerFactory,如下代码所示:

// 1.得到日志对象
private static Logger logger = LoggerFactory.getLogger(UserController.class);

注意:Logger 对象是属于 org.slf4j 包下的,不要导入错包。

因为 Spring Boot 中内置了日志框架 Slf4j,所以咱们可以直接在程序中调用 slf4j 来输出日志

使用日志对象打印日志
// 2.使用日志打印日志logger.info("--------------要输出日志的内容----------------");
日志级别 

日志的级别分为:

  • trace:微量,少许的意思,级别最低;

  • info:普通的打印信息;

  • debug:需要调试时候的关键信息打印;

  • warn:警告,不影响使用,但需要注意的问题;

  • error:错误信息,级别较高的错误日志信息;

  • fatal:致命的,因为代码异常导致程序退出执行的事件。

日志级别配置只需要在配置文件中设置“logging.level”配置项即可,如下所示:

longging:
    level:
        root: error

配置跟路径的日志级别。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/user")
public class UserController {
// 1.得到日志对象
private static Logger logger =
LoggerFactory.getLogger(UserController.class);
@Value("${server.port}")
private String port;
@Value("${spring.datasource.url}")
private String url;
@RequestMapping("/sayhi")
public String sayHi() {
// 2.使用日志打印日志
logger.trace("================= trace ===============");
logger.debug("================= debug ===============");
logger.info("================= info ===============");
logger.warn("================= warn ===============");
logger.error("================= error ===============");
return "Hi," + url;
}
}

默认日志输出级别 清除掉配置文件中的日志设置,观察控制台输入的日志级别。

得到以下结论,日志的输出级别,默认是 info。

日志持久化

以上的日志都是输出在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问 题,把日志保存下来的过程就叫做持久化。想要将日志进行持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名之后,Spring Boot 就会将控制台的日志写到相应的目录或文件下了。配置日志文件的保存路径:

logging: 
    file:
        //设置日志文件的目录
        path: D:\home\logs
        //设置日志文件的文件名
        name: D:\home\logs\spring-1024.log  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1698096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python 面对对象 类 魔法方法

魔法方法 一、__init__ 构造函数,可以理解为初始化 触发条件:在实例化的时候就会触发 class People():def __init__(self, name):print(init被执行)self.name namedef eat(self):print(f{self.name}要吃饭)a People(张三) a.eat() # in…

数据结构(三)循环链表

文章目录 一、循环链表(一)概念(二)示意图(三)操作1. 创建循环链表(1)函数声明(2)注意点(3)代码实现 2. 插入(头插&#x…

Redis数据类型(上篇)

前提:(key代表键) Redis常用的命令 命令作用keys *查看当前库所有的keyexists key判断某个key是否存在type key查看key是什么类型del key 删除指定的keyunlink key非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的…

【机器学习】模型、算法与数据—机器学习三要素

探索机器学习三要素:模型、算法与数据的交融之旅 一、模型:构建机器学习的基石二、算法:驱动模型学习的引擎三、数据:驱动机器学习的动力源泉四、代码实例:展示三要素的交融与碰撞 在数字时代的浪潮中,机器…

C++模板——函数模板和类模板

目录 泛型编程 函数模板 函数模板概念 函数模板的定义和语法 函数模板的工作原理 函数模板的实例化 隐式实例化 显示实例化 函数模板的匹配原则 类模板 类模板的定义格式 类模板的实例化 泛型编程 什么是泛型编程? 泛型编程(Generic Pr…

具身人工智能:人工智能机器人如何感知世界

什么是具身人工智能 虽然近年来机器人在智能城市、工厂和家庭中大量出现,但我们大部分时间都在与由传统手工算法控制的机器人互动。这些机器人的目标很狭隘,很少从周围环境中学习。相比之下,能够与物理环境互动并从中学习的人工智能 (AI) 代理(机器人、虚拟助手或其他智能系…

HCIP-Datacom-ARST自选题库_02_网络安全【道题】

一、单选题 1.关于网络安全性优化的内容,下列哪个选项是错误的? 管理安全 边界安全 访问控制 日志管理 2.如图所示,网络管理员为了抵御DHcP Server仿冒者攻击,在交换机上部署了DHcp snoping功能,那么以下哪一个接口应该被设…

【Java面试】二、Redis篇(中)

文章目录 1、Redis持久化1.1 RDB1.2 AOF1.3 RDB与AOF的对比 2、数据过期策略(删除策略)2.1 惰性删除2.2 定期删除 3、数据淘汰策略4、主从复制4.1 主从全量同步4.2 增量同步 5、哨兵模式5.1 服务状态监控5.2 哨兵选主规则5.3 哨兵模式下,Redi…

JMETER工具:以录制手机app为例

JMETER工具:以录制手机app为例子 JMETER安装和环境配置 pc需要安装jdk,并进行jdk的环境配置,安装好jdk并配置好后,通过命令行输入java –version出现以下界面就表示安装成功: (对应的jdk版本不可太低&…

C++实现定长内存池

项目介绍 本项目实现的是一个高并发的内存池,它的原型是Google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替换系统的内存分配相关函数malloc和fr…

Mysql之主从同步

1.BinLog同步机制 Mysql要去保证高可用,或者去分担请求压力,一般会去主从部署,读写分离。写库只负责写,而读库更多的去承担读的请求,从库不写数据,数据从主库同步,那么到底是怎么同步的呢&…

【2024】HNCTF

Web Please_RCE_Me GET传参输入?moranflag&#xff0c;之后获取源码&#xff1a;<?php if($_GET[moran] flag){highlight_file(__FILE__);if(isset($_POST[task])&&isset($_POST[flag])){$str1 $_POST[task];$str2 $_POST[flag];if(preg_match(/system|eval|a…

【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景错误提示分析原因解决方法Chromium知识点相关文章 背景 最近在使…

RabbitMQ-默认读、写方式介绍

1、RabbitMQ简介 rabbitmq是一个开源的消息中间件&#xff0c;主要有以下用途&#xff0c;分别是&#xff1a; 应用解耦&#xff1a;通过使用RabbitMQ&#xff0c;不同的应用程序之间可以通过消息进行通信&#xff0c;从而降低应用程序之间的直接依赖性&#xff0c;提高系统的…

有什么普通人可以做的赚钱软件?盘点9个适合普通人长期做的软件

在这个互联网高速发展的时代&#xff0c;智能手机已经成为我们生活中不可分割的一部分。众多APP的涌现&#xff0c;使得许多朋友都在寻求通过手机赚钱的方法。 然而&#xff0c;面对市面上琳琅满目的网上赚钱APP&#xff0c;我们该如何挑选呢&#xff1f;别担心&#xff0c;今…

python web自动化(验证码处理)

1.解决验证码问题的常⻅⼏种⽅式 1&#xff09; Debug模式启动浏览器&#xff08;浏览器复⽤&#xff09;&#xff1a; 原理&#xff1a;浏览器是有缓存记录的&#xff0c;只需要 沿⽤已经保存有登录记录的浏览器 进⾏后续的操作就⾏ 2&#xff09;识别法&#xff1a; 原理…

pycharm中,出现SyntaxError: Non-ASCII character ‘\xe4‘ in file... 的问题以及解决方法

文章目录 一、问题描述二、解决方法 一、问题描述 在pycharm中&#xff0c;使用python中编写中文字符时&#xff0c;会提示如下错误信息&#xff1a; SyntaxError: Non-ASCII character \xe4 in file ...... on line 8, but no encoding declared; see http://python.org/dev…

网上比较受认可的赚钱软件有哪些?众多兼职选择中总有一个适合你

在这个互联网高速发展的时代&#xff0c;网上赚钱似乎成了一种潮流。但是&#xff0c;你是否还在靠运气寻找赚钱的机会&#xff1f;是否还在为找不到靠谱的兼职平台而苦恼&#xff1f; 今天&#xff0c;就为你揭秘那些真正靠谱的网上赚钱平台&#xff0c;让你的赚钱之路不再迷…

MySQL--InnoDB体系结构

目录 一、物理存储结构 二、表空间 1.数据表空间介绍 2.数据表空间迁移 3.共享表空间 4.临时表空间 5.undo表空间 三、InnoDB内存结构 1.innodb_buffer_pool 2.innodb_log_buffer 四、InnoDB 8.0结构图例 五、InnoDB重要参数 1.redo log刷新磁盘策略 2.刷盘方式&…

S1E45:单链表1 课后作业

测试题&#xff1a;0. 相比起数组来说&#xff0c;单链表具有哪些优势呢&#xff1f; 答&#xff1a;长度非固定&#xff0c;可以申请添加长度 答案&#xff1a;对于数组来说&#xff0c;随机插入或者删除其中间的某一个元素&#xff0c;都是需要大量的移动操作&#xff0c;而…