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

目录

一、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  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

easy-rule规则引擎使用

简介 轻量级的规则引擎&#xff0c;易于学习的api 简单来说&#xff0c;规则引擎就是一个函数&#xff1a;yf(x1,x2,…,xn) 将业务代码和业务规则分离&#xff0c;解耦业务决策和业务代码的绑定关系 入门示例 依赖引入 <dependency><groupId>org.jeasy</grou…

Nacos 2.x 系列【8】集成 Spring Cloud Gateway

文章目录 1. 概述1.1 API 网关1.1 Spring Cloud Gateway 2. 集成案例2.1 入门案例2.2 动态路由 1. 概述 1.1 API 网关 API网关已经成为了微服务架构的一个标配组件&#xff0c;是系统对外的唯一入口。所有的客户端都通过统一的网关接入微服务&#xff0c;在网关层处理所有非业…

Jenkins工具系列 —— 通过钉钉API 发送消息

文章目录 钉钉环境搭建使用钉钉API接口 发送消息机器人安全设置使用自定义关键词机器人安全设置使用加签方式 资料下载 钉钉环境搭建 在jenkins安装钉钉插件以及小机器人&#xff0c;这部分内容可参考&#xff1a;插件 钉钉发送消息 使用钉钉API接口 发送消息 机器人安全设置…

【全开源】分类记账小程序系统源码(ThinkPHP+FastAdmin+UniApp)

基于ThinkPHPFastAdminUniAppvk-uView-uiVue3.0开发的一款支持多人协作的记账本小程序&#xff0c;可用于家庭&#xff0c;团队&#xff0c;组织以及个人的日常收支情况记录&#xff0c;支持周月年度统计。 &#xff1a;智能管理您的财务生活 一、引言&#xff1a;财务智能化…

SSMP整合案例第三步 业务层service开发及基于Mybatis的接口功能拓展

业务层开发 对于业务层的制作有个误区 Service层接口定义与数据层接口定义具有较大差别 不要混用 业务层接口关注的是业务名称 数据层接口关注的是数据层名称 操作是不难 但是有些东西还是要掌握的 业务层接口如果是业务方法 就按照业务名称来代替 如果是数据操作 直接用…

python数据分析——数据可视化(图形绘制)

数据可视化&#xff08;图形绘制基础&#xff09; 前言一、图形绘制基础Matplotlib简介使用过程sin函数示例 二、常用图形绘制折线图的绘制plot示例 散点图的绘制scatter()示例 柱状图的绘制bar示例 箱型图绘制plot.box示例 饼状图的绘制pie示例 三、图形绘制的组合情况多个折线…

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

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

全国首例!云南破获域名黑产大案,抓获630人

2021年5月以来&#xff0c;在公安部的组织指挥下&#xff0c;云南公安机关历时8个多月&#xff0c;成功破获全国首例域名黑产犯罪案件&#xff0c;经全国各地公安机关连续奋战&#xff0c;共侦破案件300起&#xff0c;抓获涉案人员630人&#xff0c;查封用于黄、赌、诈等违法网…

GpuMall智算云:xinntao/Real-ESRGAN/Real-ESRGAN-v0.2.5.0

介绍 Real-ESRGAN旨在开发用于一般图像/视频恢复的实用算法。用纯合成数据训练现实世界盲人超级分辨率。我们将强大的ESRGAN扩展到一个实用的恢复应用程序&#xff08;即Real-ESRGAN&#xff09;&#xff0c;该应用程序使用纯合成数据进行训练。GpuMall智算云 | 省钱、好用、弹…

Linux(七)

Linux&#xff08;七&#xff09; 结构体---位域/位段 (为了节省空间)字节对齐:一次性分配多少个字节 (64/32)基本数据类型对齐方式结构体对齐方式:按照成员中最大的对齐方式 共用体如何定义共用体如何定义一个共用体的变量大小端什么是大端序和小端序如何测试计算机是小端序还…

京东Java社招面试题真题,最新面试题

Java中接口与抽象类的区别是什么&#xff1f; 1、定义方式&#xff1a; 接口是完全抽象的&#xff0c;只能定义抽象方法和常量&#xff0c;不能有实现&#xff1b;而抽象类可以有抽象方法和具体实现的方法&#xff0c;也可以定义成员变量。 2、实现与继承&#xff1a; 一个类…

地下城游戏(leetcode)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 地下城游戏https://leetcode.cn/problems/dungeon-game/description/ 图解分析&#xff1a; 代码 class Solution { public:int calculateMinimumHP(vector<vector<int>>& vv) {int row vv.size(), col …

2024 年 5 个 GO REST API 框架

什么是API&#xff1f; API是一个软件解决方案&#xff0c;作为中介&#xff0c;使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值&#xff1a; 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。API不仅仅是几行代码&#xff1b;这些是为移动开…

内存函数memcpy和memmove的详解及模拟实现

1.函数memcpy void * memcpy ( void * destination, const void * source, size_t num );函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 这个函数在遇到 ‘\0’ 的时候并不会停下来。 如果source和destination有任何的重叠&#xff0c;复制的…

网络攻防概述(基础概念)

文章目录 APTAPT概念APT攻击过程 网络空间与网络空间安全网络空间(Cyberspace)网络空间安全(Cyberspace Security) 网络安全属性机密性(Confidentiality或Security)完整性(Integrity)可用性&#xff08;Availability&#xff09;不可否认性&#xff08;Non-repudiation&#xf…

如何从头搭建一个自己的java库并上传到maven官方仓库

创建代码 在代码库根目录执行maven命令&#xff0c;用于快速生成一个基础的Maven项目 mvn archetype:generate \-DgroupIdcom.mycompany \-DartifactIdmy-maven-project \-Dversion1.0.0 \-DarchetypeArtifactIdmaven-archetype-quickstart \-DinteractiveModefalse 这个命令…

OS复习笔记ch6-2

死锁的解决 死锁的预防&#xff08;打疫苗&#xff09;死锁的避免&#xff08;戴口罩&#xff09;死锁的检测&#xff08;做核酸&#xff09; 死锁的预防 前面我们提到了死锁的四个必要条件 防止前三个必要条件&#xff0c;就是间接预防防止最后一个必要条件–循环等待&…

【NumPy】关于numpy.median()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

9.Redis之list类型

list相当于链表、数据表 1.list类型基本介绍 列表中的元素是有序的"有序"的含义,要根据上下文区分~~有的时候,谈到有序,指的是"升序","降序”有的时候,谈到的有序,指的是, 顺序很关键~~如果把元素位置颠倒,顺序调换.此时得到的新的 List 和之前的 Li…

Linux(六)

Linux&#xff08;六&#xff09; 自定义头文件自定义头文件中写什么如何引入头文件条件编译条件编译作用 gcc工作原理Make 工作管理器什么是Make什么是Makefile/makefileMakefile假目标Makefile中的变量自定义变量预定义变量自动变量 Makefile中变量展开方式递归展开方式简单展…