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

【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的优点

  1. 起步依赖:常见项目的时候就可以方便的添加依赖,不再需要像Spring在添加依赖的时候,需要让添加的依赖之间版本相匹配。(开发前)
  2. 内置Tomcat容器,把外部项目可以像内部项目一样直接运行。不需要再打一个war包,将程序放到Tomcat的webapps目录中,再启动Tomcat。(开发中)
  3. 快速部署,使用jar包加上简单的命令就可以再服务器上直接运行,也就是服务器上只要装配了1.8及以上版本的JDK,就可以直接以jar包方式启动,使用Spring Boot内置的Tomacat运行。(开发后)
  4. 抛弃了XML的配置方式,Spring中使用XML的方式配置文件首先就需要我们将特定的代码先复制到文件中,然后根据自己的需要配置,比较繁琐。Spring Boot中的配置文件是空白的,你需要配置什么写什么即可。
  5. 提供了更多的监控框架,方便了监控系统运行。

 二、创建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项目中所有重要的数据都是在配置文件中配置的,比如

  1. 数据库的连接信息,包括用户名和密码的设置
  2. 项目的启动端口,
  3. 第三方系统的调用密钥等信息
  4. 用于发现和定位问题的普通日志和异常日志等。

配置文件的格式有两种propertiesyml(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.

 ✨所有的配置文件中存在两类配置项:系统配置项和用户自定义配置项

  1. 系统配置项:例如配置端口号 server.port
  2. 用户自定义配置项:例如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,在浏览器中会报错,无法运行起来。 通常我是放到后端搭建的服务上面去运行,当时前端…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...