【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());}
}

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

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

相关文章

TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的

一、TCP/IP四层模型对比OSI七层模型 它们两个定义的一些功能和协议都是差不多的。TCP/IP四层协议模型比我们的七层少了三层,把我们的数据链路层和物理层放在一层里面了,叫做数据链路层(网络接口层),对应网络协议也没有…

本质安全设备标准(IEC60079-11)的理解(六)温度

本质安全设备标准(IEC60079-11)的理解(六)温度 本质安全设备的温度要求也是非常复杂的,首先在标准中涉及有3个温度的概念: 环境温度ambient temperature, 工作温度service temperature和最高表…

【Docker】数据库动态授权组件在Kubernetes集群下的测试过程记录

目录 背景 组件原理 测试设计 环境 测试脚本 脚本build为linux可执行文件 镜像构建 Dockerfile Docker build 镜像有效性验证 总结 资料获取方法 背景 我们都知道出于安全性考虑,生产环境的权限一般都是要做最小化控制,尤其是数据库的操作授…

【MFC】05.MFC第一大机制:程序启动机制-笔记

MFC程序开发所谓是非常简单,但是对于我们逆向人员来说,如果想要逆向MFC程序,那么我们就必须了解它背后的机制,这样我们才能够清晰地逆向出MFC程序,今天这篇文章就来带领大家了解MFC的第一大机制:程序启动机…

STM32 低功耗学习

STM32 电源系统结构介绍 电源系统:VDDA供电区域、VDD供电区域、1.8V供电区域、后备供电区域。 器件的工作电压(VDD)2.0~3.6V 为了提高转换精度,给模拟外设独立供电。电压调节器为1.8V供电区域供电,且1.8V供电区域是电…

Snapdrop手机电脑互传-无需下载App

软件介绍 Snapdrop:浏览器中的本地文件共享。灵感来自苹果的空投。 软件访问地址: Snapdrop官网地址 软件开源地址: github 软件截图

【自然语言处理】大模型高效微调:PEFT 使用案例

文章目录 一、PEFT介绍二、PEFT 使用2.1 PeftConfig2.2 PeftModel2.3 保存和加载模型 三、PEFT支持任务3.1 Models support matrix3.1.1 Causal Language Modeling3.1.2 Conditional Generation3.1.3 Sequence Classification3.1.4 Token Classification3.1.5 Text-to-Image Ge…

docker 安装hive

记录一下使用docker快速搭建部署hive环境 目录 写在前面 步骤 安装docker 安装docker安装docker-compose配置docker国内镜像源(可选) 安装git & 配置github部署Hive docker-hive开始部署 使用Hive命令行收尾工作 安装vi、lrzsz关闭相关命令 END…

NodeJS 个性化音乐推荐系统 毕业设-附源码00485

摘要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规…

分布式问题

1. 分布式系统CAP原理 CAP原理:指在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitontolerance(分区容忍性),三者不可得兼。 一致性(C…

Java并发 | 常见线程安全容器

文章目录 简介一、Hash表🚣1、ConcurrentHashMap1.1 内部实现原理1.2 并发操作方法1.3 ConcurrentHashMap与Hashtable的比较 二、集合🚣2、CopyOnWriteArrayList2.1 内部实现原理2.2 Copy-On-Write(COW)设计思想2.3 实操 三、Map🚣3、Concurr…

【深度学习_TensorFlow】手写数字识别

写在前面 到这里为止,我们已经学习完张量的常用操作方法,已具备实现大部分神经网络技术的基础储备了。这一章节我们将开启神经网络的学习,然而并不需要像学习前面那样了解大量的张量操作,而是将重点转向理解概念知识,…

2021年03月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 下列哪个操作不能退出IDLE环境? A:Alt+F4 B:Ctrl+Q C:按ESC键 D:exit() 正确的答案是:B:Ctrl+Q 解析:在IDLE环境中,Ctrl+Q组合键没有特定的功能,不会退出IDLE环境。要退出IDLE环境,可以使用exit()函数或者quit…

设计模式---工厂模式

1.什么是设计模式 软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 …

一篇文章教会你什么是Linux进程控制

Linux进程控制 进程创建1.fork函数初识1.1那么fork创建子进程时,操作系统都做了什么呢?1.2 父子进程和CPU中的EIP(指令指针)之间存在一定的关系1.3 fork的常规用法有哪些?1.4 fork调用失败的原因有哪些? 2.…

【小程序】Canvas 画布分享海报

成品效果图 可以通过切换下面图片形成不同的海报背景分享图 <template><view>// type"2d"必须加<canvas type"2d" :style"{width:Artwidth px,height:Artheight px, margin:0 auto}" canvas-id"firstCanvas"id&quo…

《Java-SE-第三十一章》之网络编程

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

Windows环境利用QT+CMake编译mingw版本的opencv

Opencv官网没有提供mingw版本的opencv库&#xff0c;所以需要自己编译&#xff0c;下面是编译过程&#xff0c;32位64位方法类似。 可以直接下载编译好的mingw版本opencv4.4&#xff1a; 使用CMAKE3.22QT5.13编译后的opencv4.4&#xff08;32位的&#xff09;资源-CSDN文库 …

Python实战之使用Python进行数据挖掘详解

一、Python数据挖掘 1.1 数据挖掘是什么&#xff1f; 数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中&#xff0c;通过算法&#xff0c;找出其中的规律、知识、信息的过程。Python作为一门广泛应用的编程语言&#xff0c;拥有丰富的数据挖掘库&#…

抖音seo源码·源代码搭建·支持二开(开源)系统

抖音seo源码&#xff0c;抖音seo系统&#xff0c;抖音搜索排名&#xff0c;源码系统开发 场景&#xff1a;公认的视频发布功能可是必备的&#xff0c;智能剪辑和智能客服更不用说&#xff0c;作为产品中粉丝转化的重要一环也是必不可少的 抖音seo源码开发&#xff0c;即抖音搜…