【springBoot篇1】概念、创建和运行

news2024/12/23 15:37:35

目录

一、什么是springBoot?为什么要学springBoot

springBoot的优点:(5点)

优点1:快速集成框架

优点2:内置了Tomcat容器

优点3:快速部署项目

优点4:少配置,多注解

 优点5:支持更多的监控指标

SpringBoot的缺点

二、springBoot项目的创建

第一步:新建项目

第二步:添加一些框架支持

第三步:查看项目创建的状态 

 第四步:运行项目

SpringBoot的项目结构

启动类和其他类的关系

三、SpringBoot的配置文件

3.1配置文件的作用

存放重要信息

降低代码的耦合度

3.2配置文件的格式

配置文件的分类

配置文件的格式

springBoot配置的规则(格式?冲突?)

properies配置文件的语法

如何读取配置文件的内容

properties缺点分析

yml配置文件

yml配置文件说明

yml的特点:

yml的语法

yml对于单、双引号的问题

yml配置对象

yml配置集合

properties和yml有什么区别(重要)

四、指定文件读取

@PropertySource读取配置文件


一、什么是springBoot?为什么要学springBoot

在之前学习spring的时候,我们了解到:spring框架的诞生可以简化Java程序的开发。

springBoot翻译一下,就是spring框架的脚手架

springBoot的优点:(5点)

优点1:快速集成框架

springBoot提供了各种启动依赖的功能,用于快速集成各种框架;


优点2:内置了Tomcat容器

内置了运行容器,无需额外配置Tomcat等等的Web容器

SpringBoot内部内置了一个被打成jar包的Tomcat容器,当需要使用的时候就会调用它的API。


优点3:快速部署项目

       不需要外部的容器即可启动并且运行项目,springBoot项目启动的时候只需要编写一个main方法,然后运行这个main方法。

       之前的Servlet的时代,还需要安装smart Tomcat的插件。繁琐的的集成、部署操作,才可以运行项目。


优点4:少配置,多注解

springBoot不需要太多的配置文件,只需要在连接redis或者mysql的时候配置一下数据源即可。


 优点5:支持更多的监控指标

 通过这些指标,可以比较好地了解项目的运行情况。(例如有哪些bean等等)


SpringBoot的缺点

版本更新太快,并且不同的版本之间模块区别比较大。



二、springBoot项目的创建

如果idea编辑器是专业版的,那么点击左上角,直接选择新建spring initializr

第一步:新建项目


第二步:添加一些框架支持

第三步:查看项目创建的状态 

看到一个启动类,说明已经创建成功了

 第四步:运行项目

运行启动类的main方法,如果看到输出了spring的标志,说明运行成功了。


SpringBoot的项目结构


启动类和其他类的关系

      其他的类一定要和启动类同一级的目录下面。(也就是和启动类要在同一个包下面,或者位于启动类的子包下面),这样才可以扫描到其他的类。


三、SpringBoot的配置文件

3.1配置文件的作用

存放重要信息

整个项目的所有重要的数据都是写在配置文件当中的,例如:

数据库的连接信息、项目的启动端口、第三方系统的日志信息等等;

如果没有配置文件,那么项目就无法连接数据库


降低代码的耦合度

对于数据库连接等等的信息,不应当写在Java代码当中,应当写在配置文件当中。

场景1:

同时,对于配置文件当中的内容,也可以方便开发人员进行修改

(如果写在.java文件当中,那么对于编译之后的.class文件,它是只读文件无法修改

场景2:

方便运维人员查看项目需要部署的服务器、数据库连接等等。


3.2配置文件的格式

配置文件的分类

1、 系统的配置文件:比如数据库连接字符串、比如日志的相关配置等等,这些是系统定义好的。

2、用户自定义的配置文件。例如用户想要读取的一些文件之类


配置文件的格式

一般都是两种,一种是.properties,另外一种是.yml

但是,无论哪一种格式,都必须要命名为application.yml或者application.properties

因为springBoot在启动的时候默认只读取名称为application的配置文件。


springBoot配置的规则(格式?冲突?)

       规则1:一个项目当中可以存在两种配置文件(一种是properies,另外一种是yml),但是不建议同时出现两种

       规则2:如果.properties.yml的配置文件内容冲突了, 那么会怎样处理?优先读取.properties的配置文件。


properies配置文件的语法

properies是以键值对的形式配置的。

同时,也可以在properies当中自定义配置文件的内容


如何读取配置文件的内容

使用@Value注解来读取配置文件当中的内容:server.port属性跟着的值

/**
 * @author 25043
 */
@Component
public class ReadProperties {

    /**
     * value当中的值为配置文件当中
     * server.port的值
     * 一定要加大括号
     */
    @Value("${server.port}")
    private String port;

    @PostConstruct
    public void postConstruct(){
        System.out.println("yml当中的值:"+port);
    }
}


properties缺点分析

对于一些key,它会有很多冗余的内容:

当多个key存在相同的部分的时候,需要一一把相同的部分列举出来,比较冗余。


yml配置文件

yml配置文件说明

yml是YAML的缩写,它的全称是:"Yet another Markup Language",yml是一个可读性高,易于理解,用来表达数据序列化的格式。

最大的优势:可以跨语言。


yml的特点:

   1、写法简单、可读性高;

   2、支持更多的数据类型(;

   3、支持跨语言的使用:java/python


yml的语法

这个也是按照key-value的形式来进行存储的。

但是它的写法相比于properties更加地简洁。

当多个key存在重复的元素的时候,可以把这些key相同的部分都给提取出来。

 ​​​​​​​​​​properties:


yml对于单、双引号的问题


yml配置对象

多行的写法:

#对象写法1
student :

  id : 1
  name : 张三
  age: 22

单行的写法:

#对象写法2
   student2 : {id : 2, name : 李四, age : 20}

获取对象:

第一步:在properties当中存放一个对象:


第二步:新建一个和这个对象属性一模一样的实体类


第三步:把这个实体类注入到Spring容器当中(5大类注解) 


第四步:从配置文件当中获取这个对象  


第五步:从通过属性注入获取对象


yml配置集合

配置文件:

#dbtypes对应一个实体类

#name对应的是集合

dbtypes : { name: [ mysql, sqlServer,db2 ] }

注入集合: 

 获取bean:


properties和yml有什么区别(重要)

区别1:properties仅仅支持Java项目,但是yml支持包括Java在内的多种语言(例如python);

区别2:properties的key写起来比较冗余,不像yml那样简易。(yml支持层级,层级之间采用缩进的方式)

区别3:yml支持更多的数据类型(string,object,list)


四、指定文件读取

@PropertySource读取配置文件

这个注解可以作用在类的上面,同时指定读取哪一个配置文件

如果没有这个注解,那么@Value注解默认读取的是application.properties文件当中的内容。


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

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

相关文章

机器学习中的公平性

文章目录机器学习公平性评估指标群体公平性指标个人公平性指标引起机器学习模型不公平的潜在因素提升机器学习模型公平性的措施机器学习公平性 定义: 机器学习公平性主要研究如何通过解决或缓解“不公平”来增加模型的公平性,以及如何确保模型的输出结果…

生信刷题之ROSALIND——Part 1

目录写在前面1、Counting DNA NucleotidesProblemSample DatasetSample OutputCodeOutput2、Transcribing DNA into RNAProblemSample DatasetSample OutputCodeOutput3、Complementing a Strand of DNAProblemSample DatasetSample OutputCodeOutput4、Rabbits and Recurrence…

Android操作系统介绍

目录 Android 名词 Android LOGO 体系架构 Android系统架构 Linux 内核 硬件抽象层(HAL) Android Runtime 原生C/C库 Java API框架 系统应用 应用组件 活动 (Activity) 服务 (Service ) 广播接收器 &…

BLOOM模型结构详解

《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》 论文地址: https://arxiv.org/pdf/2211.05100.pdf 代码地址: transformers库-modeling_bloom.py BigScience 官方提供的代码链接并没有找到完整的模型实现代码,只有提示说模型结构代码是在 Megatron 的…

JS 中深拷贝的几种爱恨情仇

页面开发中,经常会碰到需要对数据进行某些处理操作,又不想影响原先的数据,所会经常将数据进行拷贝,当然这里指的是深拷贝。 深拷贝和浅拷贝的区别? 深拷贝通通俗点来讲呢,其实就是不管当前要操作的数据层级…

目标检测算法——YOLOv5/v7/v8改进结合涨点Trick之Wise-IoU(超越CIOU/SIOU)

超越CIOU/SIOU | Wise-IoU助力YOLO强势涨点!!! 论文题目:Wise-IoU: Bounding Box Regression Loss with Dynamic Focusing Mechanism 论文链接:https://arxiv.org/abs/2301.10051 ​ 近年来的研究大多假设训练数据中的…

Java实现发送邮件(定时自动发送邮件)

系列文章目录 Redis缓存穿透、击穿、雪崩问题及解决方法Spring Cache的使用–快速上手篇分页查询–Java项目实战篇全局异常处理–Java实战项目篇 该系列文章持续更新,更多的文章请点击我的主页查看哦! 文章目录 目录 系列文章目录 文章目录 前言 一…

算法训练第五十七天 | 647. 回文子串、516.最长回文子序列、动态规划总结篇

动态规划part17 647. 回文子串题目描述思路暴力解法动态规划双指针法 516.最长回文子序列题目描述思路 动态规划总结篇动划基础背包问题系列打家劫舍系列股票系列子序列系列总结 647. 回文子串 题目链接:647. 回文子串 参考:https://programmercarl.com…

hot100:数组——31、33

31. 下一个排列 思路:其实这道题的意思就是,简单地说,就是找到一个比现有的给出的数组代表的值大的最小的数 比如给出的数组是[1,2,3],它代表的数值是123,现有的元素组成的数值中,比123大的有很多&#xf…

3.6 n维随机变量

学习目标: 学习n维随机变量需要掌握一定的数学知识,包括多元微积分、线性代数和概率论等。要学习n维随机变量,我会采取以下步骤: 复习相关的数学知识:首先,我会复习多元微积分、线性代数和概率论的基本知…

OpenCV介绍与GUI特征(一)

目录0.1 OpenCV-Python教程简介OpenCVOpenCV-PythonOpenCV-Python教程OpenCV需要你!!!贡献者0.2 在Windows中安装OpenCV-Python目标从预制的二进制文件中安装OpenCV从源代码构建OpenCV练习0.3 在Ubuntu中安装OpenCV-Python目标从预制的二进制文件中安装OpenCV-Python从源码构建…

Revit怎么绘制结构梁?一键生成梁?

绘制结构梁是Revit基础的功能,对于不少刚接触Revit的小伙伴来说似乎还无从下手,今天就让小编来告诉大家在Revit中绘制结构梁的方法。 一、Revit中结构梁图文绘制过程 首先,我们选择“结构”选项卡中的“梁”工具,点击选择梁的类…

android12 displayArea学习

一:数据结构分析 1:android 12 WindowContainer 的类继承关系如下 下图为 WindowContainer 简要的对象图。 下图是 Aosp默认的display层次结构对象图。 Aosp定义的feature有如下 FEATURE_ROOT 0; FEATURE_DEFAULT_TASK_CONTAINER 1; FEATURE_WINDOW_…

DNS服务器 - 理论

DNS服务器1. 概念2. DNS域名结构3. 域名的分级4. 域名服务器5. 域名解析过程5.1 递归查询与迭代查询5.2 解析流程1. 迭代查询2. 递归查询6. 高速缓存:7. 加上主机缓存后的DNS解析流程8. 常见的域名解析记录9. DNS正向解析和反向解析1. 概念 DNS服务器(D…

C++指针与其它复合类型

目录 前言: 1.指针与字符串 1.1cout接收char类型的地址的反应 1.2字符串字面值 1.3字符串备份 2.使用new创建动态结构 3.使用new和delete搭配存储键盘输入的字符串 前言: 指针我们已经知道如何使用了,也知道指针和数组配合起来使用&am…

DHCP及中继(UOS)

DHCP服务器 中继器 客户端 服务器 安装DHCP apt install isc-dhcp-server -y 编辑配置文件 vim /etc/dhcp/dhcpd.conf 重启服务 systemctl restart isc-dhcp-server 配置监听网卡 vim /etc/default/isc-dhcp-server 中继器 安装dhcp yum install dhcp -y nmtui 修改…

【LeetCode每日一题: 1042. 不邻接植花 | 图论 | 染色问题】

🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…

Qt中调用C#制作的com组件

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 这里记录一下在 Qt 64位程序中调用 C# 制作的 com 组件的流程,方便后期自己回顾。 1. 了解 TLB 格式 拿到的依赖库最…

hbase进阶操作——读流程与写流程介绍

系列文章目录 centos7虚拟机下hbase的使用案例讲解 文章目录 系列文章目录 一、hbase架构原理 1.1、StoreFile 1.2、MemStore 1.3、WAL 二、hbase的写流程 2.1、写流程的流程图 2.2、写流程的流程图说明 三、hbase读流程 3.1、读流程的流程图 3.2、读流程的流程图解…

C/C++|物联网开发入门+项目实战|指针|嵌入式C语言高级|C语言内存空间的使用-学习笔记(9)

文章目录2-3 : C语言内存空间的使用指针概述示例:指针修饰符指针运算符示例示例1多级指针例子省略argc(个数)的常用写法:参考: 麦子学院-嵌入式C语言高级-内存空间2-3 : C语言内存空间的使用 指针概述 内存类型资源地…