【Spring Boot】Spring Boot项目的创建和文件配置
目录
一、为什么要学Spring Boot
1、Spring Boot的优点
二、创建Spring Boot项目
1、创建项目之前的准备工作
2、创建Spring Boot项目
3、项目目录的介绍
4、安装Spring Boot快速添加依赖的插件
5、在项目中写一个helloworld
三、Spring Boot的配置文件
1、配置文件的作用
2、properties格式的配置文件
2.1、基本语法格式
2.2、读取配置项
3、yml格式的配置文件
3.1、yml基本语法
3.2、使用yml配置对象
4、配置集合
一、为什么要学Spring Boot
Spring的诞生是为了简化Java程序的开发,而Spring Boot的诞生是为了简化Spring程序开发的,他就是Spring框架的脚手架。为了快速开发Spring程序而开发的一个框架。
Spring和Spring Boot开发效率就像下面的图片
Spring

Spring Boot

火车让我们出行方便,但是高铁让我们的生活更便捷,这就像我们的Spring和Spring Boot。
1、Spring Boot的优点
- 起步依赖:常见项目的时候就可以方便的添加依赖,不再需要像Spring在添加依赖的时候,需要让添加的依赖之间版本相匹配。(开发前)
- 内置Tomcat容器,把外部项目可以像内部项目一样直接运行。不需要再打一个war包,将程序放到Tomcat的webapps目录中,再启动Tomcat。(开发中)
- 快速部署,使用jar包加上简单的命令就可以再服务器上直接运行,也就是服务器上只要装配了1.8及以上版本的JDK,就可以直接以jar包方式启动,使用Spring Boot内置的Tomacat运行。(开发后)
- 抛弃了XML的配置方式,Spring中使用XML的方式配置文件首先就需要我们将特定的代码先复制到文件中,然后根据自己的需要配置,比较繁琐。Spring Boot中的配置文件是空白的,你需要配置什么写什么即可。
- 提供了更多的监控框架,方便了监控系统运行。
二、创建Spring Boot项目
1、创建项目之前的准备工作
还是之前说过的,如果你想使用的idea社区版,那么就需要你安装2021.3.x版本或者这份版本之前的版本,因为社区版新版本对我们安装的一些插件收费。
创建Spring Boot项目之前需要安装Spring Boot Helper插件

这个插件安装完成之后,它的图标和名字就发生了改变,变成了下面的这个东西。

2、创建Spring Boot项目


这一步就是我们上面说的起步依赖

注意到这里并不是所有人的项目会创建成功,我们还需要检查一下自己的国内源是否配置正确。
检查和配置当前项目的国内源

设置往后新创建的项目的国内源

具体的setting.xml文件的配置,可以看我的这篇博客【Spring】创建一个Spring项目与Bean对象的存储_奋斗べ青年.的博客-CSDN博客

这样选择了之后,才会继续加载我们的项目

项目创建好了之后,一些文件我们是需要删除的,因为我们用不上

到这里一个Spring Boot 项目就创建完成了。
3、项目目录的介绍

4、安装Spring Boot快速添加依赖的插件
这里需要知道的是这个插件中只是提供了Spring Boot中最常用的jar包(依赖),不太常用到的这个里面是没有的,还是需要我们在maven仓库中找到,手动添加依赖。

使用这个插件,需要我们在pom.xml文件中单机鼠标右键
然后就会弹出下面的框

5、在项目中写一个helloworld
这里需要注意的是,创建类需要在demo包底下创建的,不能在Java包的其他包底下创建,在其他包底下创建的类,是不能别识别的。

当我们将创建的TestController类添加到example包下,这个时候重启,再次访问是访问不到的的。

Spring Boot核心思想:约定大于配置。Spring Boot中有许多约定或规范,你必须遵循。这里需要遵循的约定就是,所有你要放在容器中的对象的类,都必须和启动类在同一个目录下或者是在启动类所在目录的子目录中。如果不放,就会扫描不到。
三、Spring Boot的配置文件
1、配置文件的作用
Spring Boot项目中所有重要的数据都是在配置文件中配置的,比如
- 数据库的连接信息,包括用户名和密码的设置
- 项目的启动端口,
- 第三方系统的调用密钥等信息
- 用于发现和定位问题的普通日志和异常日志等。
配置文件的格式有两种properties和yml(yaml) 。虽然有两种格式,但是配置文件的名字都需要是application,如果配置文件的名字是其他的,那么这个文件不会被识别,那么其中的配置信息也就并不会生效。
properties格式的配置文件可以和yml格式的配置文件共同存在于一个项目中,但是如果两个配置文件中出现了同样的配置信息,比如两个配置文件中都配置了"server.port",指定tomcat的端口号不同,那么这个时候就会以properties格式的配置文件中的配置为主,也就是说properties配置文件优先级高,但是两个配置文件都会被加载。只不过是优先级高的先加载。

一个项目中可以将两种格式的配置文件共存,但是实际使用中,我们通常只会采用一种格式的配置文件。这样可以更好的维护,管理。
2、properties格式的配置文件
2.1、基本语法格式
properties的语法是用键值对的形式来组织的,key与value之间是使用"="连接的,并不需要多余的空格和缩进。配置文件中使用"#"号来添加注释信息。如下面的代码
server.port=8888
✨这里需要注意的是,我们在properties格式的配置文件中写了注释信息,注释信息中存在中文,可能在下次打开这个项目的时候,注释信息中存在的中文会乱码,因为properties格式的配置文件中默认的字符集是ISO-8859-1.

解决中文乱码问题可以在setting中设置来解决。但是当前已经写了的中文在设置好了之后,再次打开还是乱码,但是将字符集修改之后添加的中文,就不会在出现乱码的问题了。
这个操作只是修改当前项目的。

我们需要将从今往后创建的所有新项目都改为UTF-8,点击进入之后,和上面的操作一样搜索encoding,然后将所有的字符集都改为UTF-8.

✨所有的配置文件中存在两类配置项:系统配置项和用户自定义配置项
- 系统配置项:例如配置端口号 server.port
- 用户自定义配置项:例如myMotherland = China
#数据库的配置
Spring.datasource.url=jdbc:mysql://127.0.0.1:3306/库名
Spring.datasource.username=root
Spring.datasource.password=123456
Spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#用户自定义配置项
myMotherland = China#用户自定义配置项
myMotherland = China
2.2、读取配置项
在项目中,想要主动的读取配置文件中的内容,可以使用@Value注解来实现,@Value注解参数中使用"${}"的格式读取。
package com.example.demo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@ResponseBody
public class TestController {@Value("${myMotherland}")//这里是通过依赖注入的方式将配置文件中的自定义信息注入到当前的属性中private String myMotherland;@RequestMapping("/sayHi")public String sayHi(){return "我的祖国是"+myMotherland;}}

properies配置文件结构清晰,没有层级、各种缩进和空格格式的控制,键和值的形式简单,这种格式很适合初学者。不容易出错。但是这种格式的写法比较臃肿。还有一个问题就是properies格式的配置文件对中文的支持不是很好。

3、yml格式的配置文件
yml是YAML的缩写(全称为Yet Another Markup Language)意思为另一种标记语言。他对中文的支持很好
- yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
- yml ⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩ 符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
- yml ⽀持更多的编程语⾔,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、 JavaScript、Perl 中。
3.1、yml基本语法
yml是属性结构的配置文件,它的基础语法是"key:value",注意key和value之间使用因为冒号加空格的方式组成的,其中空格不能省略。下面我们来看一下设置端口号和数据库连接信息的代码
#设置端口号
server:port: 8081
#设置数据库连接
spring:datasource:url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8username: rootpassword: 123456
3.2、使用yml配置对象
我们使用yml还可以配置对象
#自定义对象
student:id: 1name: 李四age: 20
1️⃣可以使用@Value注解来获取对象中的属性的值。使用可以使用@Controller注解将UserController类的对象存储到容器中。在将这个类创建成对象时通过@Value注解,将配置文件中student对象的名字赋值给当前类的属性,然后调用初始化方法doPostConstruct,完成对象的初始化。
package com.example.demo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import javax.annotation.PostConstruct;@Controller
public class UserController {@Value("${student.name}")private String name;@PostConstructpublic void doPostConstruct(){//初始化方法System.out.println("name "+name);}
}

2️⃣我们也可以使用@ConfigurationProperties注解来读取配置文件中的对象并且与五大类注解搭配使用,在User类中使用五大类注解中的一个的作用是保证@ConfigurationProperties注解能够执行,只有让User类和Spring Boot框架一起启动才能够将配置文件中的对象属性赋值给User类中的属性
package com.example.demo.model;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@ConfigurationProperties("student")
@Component
public class User {private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}
这里将user对象打印出来
package com.example.demo;import com.example.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import javax.annotation.PostConstruct;@Controller
public class UserController {@Autowiredprivate User user;@PostConstructpublic void doPostConstruct(){//初始化方法System.out.println(user.toString());}
}

4、配置集合
配置文件也可以配置list集合,如下所示
#配置集合
dbtypes://key值name://集合名字//集合属性- mysql- sqlserver- db2
或者使用行内写法
dbtypes: {name: [mysql,sqlserver,db2]}
这里读取集合和对象一样,也是使用@ConfigurationProperties注解来读取,具体实现和读取对象一样,先创建一个list类,将集合中的属性设置成私有的,然后使用get和set方法,然后通过下面的程序将list对象赋值到当前类的属性上。
package com.example.demo;import com.example.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import javax.annotation.PostConstruct;@Controller
public class UserController {@Autowiredprivate List list;@PostConstructpublic void doPostConstruct(){//初始化方法System.out.println(list.toString());}
}
相关文章:
【Spring Boot】Spring Boot项目的创建和文件配置
目录 一、为什么要学Spring Boot 1、Spring Boot的优点 二、创建Spring Boot项目 1、创建项目之前的准备工作 2、创建Spring Boot项目 3、项目目录的介绍 4、安装Spring Boot快速添加依赖的插件 5、在项目中写一个helloworld 三、Spring Boot的配置文件 1、配置文件的…...
Spring Cloud 智慧工地源码(PC端+移动端)项目平台、监管平台、大数据平台
智慧工地源码 智慧工地云平台源码 智慧建筑源码 “智慧工地”是利用物联网、人工智能、云计算、大数据、移动互联网等新一代信息技术,彻底改变传统建筑施工现场参建各方现场管理的交互方式、工作方式和管理模式,实现对人、机、料、法、环的全方位实时监…...
通达OA SQL注入漏洞【CVE-2023-4165】
通达OA SQL注入漏洞【CVE-2023-4165】 一、产品简介二、漏洞概述三、影响范围四、复现环境POC小龙POC检测工具: 五、修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损…...
centos7 安装 docker 不能看菜鸟教程的 docker 安装,有坑
特别注意 不能看菜鸟教程的 docker 安装,有坑 如果机器不能直接上网,先配置 yum 代理 proxyhttp://172.16.0.11:8443 配置文件修改后即刻生效,再执行 yum install 等命令,就可以正常安装软件了。 参考 https://blog.csdn.net/c…...
♥ vue中$nextTick()
♥ vue中$nextTick() ① 语法 this.$nextTick(回调函数)② 作用 在下一次 DOM 更新结束后执行其指定的回调 使用时机----(比方Echarts地图的渲染) 当改变数据后,要基于更新后的新DOM进行某些操作时,要在nextTick所指定的回调函数中执行 ③ 案例: 实现…...
小程序裂变怎么做?小程序裂变机制有哪些?
做了小程序就等于“生意上门”?其实并不是这样。小程序跟流量平台较为明显的区别就在于小程序并非“自带流量”,而是需要企业利用自己的营销推广能力来建立引流渠道,从而完成用户的拉新和留存、转化。因此,想要用小程序来增加自己…...
Openlayers实战:使几何图形适配窗口
Openlayers开发的项目中,有一种应用非常重要,就是绘制或者显示出几何图形后,让几何图形居中并适配到窗口下,这样能让用户很好的聚焦到所要看的内容中去。 这里使用了fit的这个view 的方法,具体的操作请参考示例源代码。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozh…...
活动发布会邀请媒体6步走
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 邀请媒体参加活动发布会对信息的传播,企业品牌建设有诸多的好处,今天就与大家分享下邀请媒体参加活动报道的6个步骤: 1. 策划与准备: -明…...
W6100-EVB-PICO作为TCP Client 进行数据回环测试(五)
前言 上一章我们用W6100-EVB-PICO开发板通过DNS解析www.baidu.com(百度域名)成功得到其IP地址,那么本章我们将用我们的开发板作为客户端去连接服务器,并做数据回环测试:收到服务器发送的数据,并回传给服务器…...
emqx-5.1.4开源版使用记录
emqx-5.1.4开源版使用记录 windows系统安装eqmx 去官网下载 emqx-5.1.4-windows-amd64.zip,然后找个目录解压 进入bin目录,执行命令启动emqx 执行命令 emqx.cmd start使用emqx 访问内置的web管理页面 浏览器访问地址 http://localhost:18083/#/dashboard/overv…...
Java 线程池的原理与实现
最近在学习线程池、内存控制等关于提高程序运行性能方面的编程技术,线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。一提到池,我们会想到数据库连接池,但是线程池又如何呢?建议:在阅读本文前,先理一理同步的知识,…...
【idea】点击idea启动没反应
RT 点击idea启动的时候没反应,接着百度报错,基本跟他们的也不一样。 首先我是做版本升级。其次,我之前是破解的。如果你也是跟我一样的话,那问题可能就处在破解上了 解决方式 首先,是跟大部分解决思路一样。先找到项…...
C# Atrribute和反射的简单例子
Attribute 需要以Attribute 结尾, 并继承Attribute namespace AttributeTest {public class HeroAttribute : Attribute{} }namespace AttributeTest {public class SkillAttribute : Attribute{} }namespace AttributeTest {[Hero]public class Blademaster{[Skill]public vo…...
ASP.NET Core - 缓存之分布式缓存
分布式缓存是由多个应用服务器共享的缓存,通常作为访问它的应用服务器的外部服务进行维护。 分布式缓存可以提高 ASP.NET Core 应用的性能和可伸缩性,尤其是当应用由云服务或服务器场托管时。 与其他将缓存数据存储在单个应用服务器上的缓存方案相比&am…...
代理模式(C++)
定义 为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。。 应用场景 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等)直接访问会给使用者、或…...
C# 有效的字母异位词
242 有效的字母异位词 给定两个字符串 和 ,编写一个函数来判断 是否是 的字母异位词。stts 注意:若 和 中每个字符出现的次数都相同,则称 和 互为字母异位词。stst 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输…...
R语言安装包Seurat
环境Ubuntu22,R4.1 also installing the dependencies ‘curl’, ‘openssl’, ‘httr’, ‘plotly’ R包安装的时候报了这个错误ERROR: dependencies httr, plotly are not available for package Seurat 解决方法,退出R,在terminal中键入…...
vue2中使用mixins(混入)和vue3中使用composable
文章目录 一、mixins混入1、 新建mixins文件夹,新建myMixins.js2、myMixins.js 文件3、index.vue 文件(要使用的文件) mixins 总结二、composable(组合式api composition )1、 新建composables文件夹,新建useEdit.js2、useEdit.js…...
通过OpenTelemetry上报Python-flask应用数据(阿里云)
参考文档 https://help.aliyun.com/document_detail/611711.html?spma2c4g.90499.0.0.34a056ddTu2WWq 先按照 方法一:手动埋点上报Python应用数据 步骤测试上报是否正常。 flas 上报 在 手动埋点上报Python应用数据 的基础上,上报flask应用的数据&#…...
使用node搭建服务器,前端自己写接口,将vue或react打包后生成的dist目录在本地运行
使用node.jsexpress或者使用node.jspm2搭建服务器,将vue或react打包后生成的dist目录在本地运行 vue项目打包后生成的dist目录如果直接在本地打开index.html,在浏览器中会报错,无法运行起来。 通常我是放到后端搭建的服务上面去运行,当时前端…...
别再死记硬背公式了!用HEC-RAS 1D模拟洪水,你得先搞懂这几个核心概念
HEC-RAS洪水模拟实战:从理论公式到软件操作的思维跃迁 当第一次打开HEC-RAS软件界面时,许多水利工程师都会陷入一种认知困境——那些在教科书上清晰明了的能量方程和动量方程,怎么到了实际操作中就变成了难以理解的参数选项和计算警告&#x…...
Windows HEIC缩略图终极指南:3分钟让资源管理器完美预览iPhone照片
Windows HEIC缩略图终极指南:3分钟让资源管理器完美预览iPhone照片 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 还…...
销售智能体:小红书与抖音评论区自动抓取引导加微信及智能聊单系统
销售智能体:小红书与抖音评论区自动抓取引导加微信及智能聊单系统 一、系统概述与设计目标 1.1 业务背景与痛点分析 在2026年的社交媒体营销环境中,小红书已拥有超过4亿月活用户,其独特的“种草”文化和强大的搜索电商属性使其成为品牌营销和个人IP打造的必争之地。抖音同…...
别再只用平均值了!用Python的sklearn QuantileRegressor做分位数回归,预测区间更靠谱
分位数回归实战:用QuantileRegressor构建更可靠的预测区间 当我们在电商平台上预测下个季度的销售额时,传统线性回归给出的"平均预测值"往往让人心里没底——那些突然爆款的商品和滞销的长尾商品会让预测误差大得惊人。这时候,分位…...
地平线XJ3开发实战:如何用Docker容器隔离环境并实时同步宿主机代码(以Samples为例)
地平线XJ3开发实战:Docker容器环境隔离与实时代码同步的最佳实践 在AI算法和嵌入式开发领域,环境配置往往是项目启动的第一道门槛。想象一下这样的场景:你刚刚拿到地平线XJ3开发套件,准备大展身手,却发现团队成员的开发…...
英雄联盟国服皮肤定制终极指南:R3nzSkin技术深度解析与安全实践
英雄联盟国服皮肤定制终极指南:R3nzSkin技术深度解析与安全实践 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server R3nzSkin国服特供版是专为中…...
CSS实现盒子倒角不规则效果_利用border-radius多个值
border-radius需按1/2/4值规则设置,四角不规则倒角须用“水平/垂直”双值写法,IE11不支持斜杠语法,超尺寸值会被自动裁剪,单位混用和空格错误易致解析失败。border-radius 支持四个角分别设置,但值必须成对或单个很多人…...
Beyond Compare 5授权密钥生成器:3种方法轻松解决评估期过期问题
Beyond Compare 5授权密钥生成器:3种方法轻松解决评估期过期问题 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare 5作为一款功能强大的文件对比工具,在30天…...
抖音批量下载器终极指南:从零开始掌握高效视频素材管理方案
抖音批量下载器终极指南:从零开始掌握高效视频素材管理方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...
【限时开源】边缘Docker部署Checklist v3.2(含NVIDIA Jetson/树莓派/国产RK3588适配矩阵)
第一章:边缘Docker部署的核心挑战与演进趋势在资源受限、网络不稳、物理分散的边缘环境中,Docker 容器的部署远非云中心场景的简单平移。轻量化运行时、离线就绪能力、安全可信启动、异构硬件适配以及生命周期自治性,共同构成了边缘容器落地的…...
