【Spring Boot学习一】创建项目 Spring Boot的配置文件

目录

一、安装插件

二、创建Spring Boot项目

1、创建项目

1.1 使用IDEA创建

 1.2 网页版本创建

2、项目目录介绍与运行

三、Sping Boot的配置文件(重点)

🌷1、.properties配置文件

(1)基础语法:Key = value

(2)读取配置⽂件中的内容,@Value 注解使⽤“${}”的格式读取;

🌷2、.yml配置文件

(1)基础语法:key: value

(2)配置数据库及基本数据类型:读取@Value{“${ }”},与properties 相同。

 (3)配置字符串并读取:读取@Value{“${ }”}

(4)配置对象并读取:使⽤注解@ConfigurationProperties 来读取+@Autowired

(5)配置集合并读取:和上面获取对象的方式一致,在,yml文件中集合的形式是:-加空格后面写具体内容。

(6)配置map:与读取集合的方式相同,只是.yml文件中map的配置格式是:隔开的。

🌷3、补充:多平台系统配置项


一、安装插件

        Spring和Tomcat都是apache开源组织的。创建一个SpringBoot项目,需要安装插件(专业版本不需要,社区版本需要)。

1、确认自己的IDEA版本

IDEA版本在 2021.1 -2022.1.4 下载插件 Spring-boot-helper(我自己的就是这个版本),放在自己电脑的一个文件夹下,后面一步要使用。
https://plugins.jetbrains.com/plugin/18622-spring-boot-helper/versions

 2、查找插件

        我们一般的查找插件方式如下,但是注意,我们这里不要直接点击install,因为这个是要收费的。

点击右上角的“齿轮”图标,选择从自己电脑上安装,也就是第一步中我们自己下载好的压缩包。安装好之后重启即可。

 最终安装好的效果


二、创建Spring Boot项目

         首先我们知道为什么要使用Spring Boot?目的就是为了简化Spring程序开发。

知道Spring Boot的优点?

(1)快速集成框架:Spring Boot提供了启动添加依赖的功能,用于秒级集成各种框架;

(2)内置运行容器:无序配置Tomcat和Web容器,直接运行和部署程序;

(3)快速部署项目:无需外部容器即可启动并运行项目;

(4)使用注解和配置的方式进行开发:不需要繁琐的XML文件;

(5)支持更多的监控的指标,可以更好的了解项目的运行情况。

可能有些还不太理解,但是后面学习完之后可能会对它的优点有一个更深入的理解。

1、创建项目

1.1 使用IDEA创建

 

 

 创建好之后,引入依赖!(个人感觉这是最难的一步,因为网络不好,你怎么引入都引入不进来,非常的崩溃)而且我还遇见一个问题,就是创建的pom文件中自动生成的是2.7.13.RELEASE这个版本,怎么切换网络都不行,最后发现IDEA生成的这个版本官网上就不存在!因此将版本改为2.7.13即可!最后包也引入成功了,但是pom文件中有一处还是标红,但是不影响使用,如果有知道这个问题的小伙伴可以告诉我下~

 1.2 网页版本创建

如果有小伙伴不想安装这个插件,当然也可以使用网页版进行项目的创建。

打开网址:https://start.spring.io


2、项目目录介绍与运行

 在创建好项目之后,会自动生成一个主函数,我们运行一下,成功了才真正说明我们这个项目创建成功了。

 在网址输入:

 注意:在学习Spring Boot的时候,最大的一个感受就是:最难的不是写代码,而是配置环境。后来经过一定的学习又感受到,在Spring Boot阶段,最重要的一个准则就是:约定大于配置!

比如,在上面测试项目是否创建成功,就是Spring Boot约定大于配置的一个体现。

因为我们在之前的原生项目中,将bean交给Spring管理,需要在xml文件中配置扫描路径,而在Spring Boot中,约定会扫描启动类所在的路径以及子路径,比如下面这个例子:

 如果不在类扫描路径下,那么就会报错。

问题1:Spring Boot与Servlet项目的区别?


三、Sping Boot的配置文件(重点)

Spring Boot的配置文件主要有两个:.properties和.yml。

配置文件的格式:application.yml和application.properties(application的名字也不能修改)。

这两个文件相当于手机的老款(.properties)和新款(.yml)一样,功能都是一样的。如果在两个文件都存在的时候,两个都会生效;不过在两者发生冲突的时候,以.properties为准。(但加载完.properties文件后,也会加载.yml文件)。一般实际业务中,我们只选取一种即可。

🌷1、.properties配置文件

(1)基础语法:Key = value

(2)读取配置⽂件中的内容,@Value 注解使⽤“${}”的格式读取;

 执行main方法结果:

 注意:如果再次打开IDEA,发现.properties文件的中文注释变为了乱码:

乱码是不可逆的,设置好编码格式之后,重写乱码内容,下次打开就好了。

(3)properties 缺点分析

properties 配置⽂件中会有很多的冗余的信息,⽐如这些:因此使用yml文件的格式化来解决。

🌷2、.yml配置文件

yml就是YAML,全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。

(1)基础语法:key: value

注意:英文冒号后面有空格,空格不能省略。

(2)配置数据库及基本数据类型:读取@Value{“${ }”},与properties 相同。

#布尔值
boolean:value: true
#boolean.value: true
#boolean.value1: false
#整数
int:value: 10
#也可以写这样:一般这种用于只有一个值的写法,一个Key多个值用上面的写法 int.value: 10 
#浮点数
float.value: 3.1415926
float.value1: 3.1415926-5 #科学计数法
#Null,~表示null
null.value: ~

 yml读取上述配置:

@Component
public class Demo2_ReadYml {//读取.yml配置文件的内容//1、读取数据库名称@Value("${spring.datasource.username}")private String d1;//2、读取boolean类型@Value("${boolean.value}")private boolean b1;//3、读取浮点类型@Value("${float.value}")private float f1;//4、读取整型@Value("${int.value}")private int i1;@Value("${null.value}")private String n1;@PostConstructpublic void postConstruct(){System.out.println(d1);System.out.println(b1);System.out.println(i1);System.out.println(n1);System.out.println(f1);}
}

 (3)配置字符串并读取:读取@Value{“${ }”}

 

总结:

  • 字符串默认不⽤加上单引号或者双引号。
  • 单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据。
  • 双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思。 

(4)配置对象并读取:使⽤注解@ConfigurationProperties 来读取+@Autowired

补充:我们之前创建一个类的时候,属性如果为私有的,要设置它的get和set方法。我们之前在创建项目的时候引入了lombok,所以可以使用它来更加简洁的获取get和set方法。(在类上加@Data注解)

Student类:注意这三个注解的作用

@ConfigurationProperties(prefix = "student")//进行赋值
//@ConfigurationProperties("student")//可以省略
@Component//交给Spring管理
@Data //使用lumbook生成get和set方法
public class Student {private String name;private Integer age;
}

经过编译之后,我们在target下找到Student类,可以发现,是我们正常方式写的这种get与set方法的形式,说明我们这种引入lombok的形式是成功的。

 .yml配置文件:

调用类的方法:此时使用注解@Autowired

@Component
public class Demo3_ReadYmlObject {@Autowiredprivate Student student;@PostConstructpublic void postConstruct(){System.out.println(student);}
}

执行结果

 注意不要弄混了。

(5)配置集合并读取:和上面获取对象的方式一致,在,yml文件中集合的形式是:-加空格后面写具体内容。

.yml配置文件

 Student类 : 

 调用类的方法:

执行结果:

(6)配置map:与读取集合的方式相同,只是.yml文件中map的配置格式是:隔开的。

 Student类:

 

执行结果:

 总结:

(1)配置数据库,基本数据类型,字符串等:用@Value("${ }")读取

(2)配置对象,集合,map:读取的方式都是@ConfigurationProperties(prefix = "");

(注意看读取集合中使用的各种注解,以及各种文件之间的对应关系!)

总结:.properties 与. yml文件的区别

  • properties 是以 key=value 的形式配置,⽽ yml 使⽤的是key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。
  • properties 配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。
  • yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等;
  • yml ⽀持更多的数据类型。

🌷3、补充:多平台系统配置项

代码演示:设置如下的yml文件

 主配置环境中设置走哪个环境

#1、配置数据库
#spring:
#  datasource:
#    url: jdbc:mysql://127.0.0.1:3306/数据库名?characterEncoding=utf8
#    username: root
#    password: root#设置走哪个文件:dev还是test还是prod
spring:profiles:active: dev

 测试:能否获取到dev平台下的数据库密码

获取正确。 

 

 总结:设置不同环境的配置⽂件

(1)先写各个环境的配置文件:格式是application-XXX.yml;

 (2)在主配置文件application.yml文件中设置环境参数
 


猜猜今日份心情~

 

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

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

相关文章

我在VScode学Java类与对象(Java显式参数和隐式参数、静态方法+main方法、Java访问修饰符、static关键字、Java的包、对象数组)第三辑

我的个人博客主页:如果’真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客:《我在VScode学Java》 续《我在VScode学Java(Java的类与对象)》 方法会操作对象并访问他们的实例字段。 伍._. 显式参…

elementUI el-radio 无法点击的问题

<el-form-item label"B端客户类型" prop"user_type"><template slot"label"><span>B端客户类型</span><el-tooltip effect"dark" placement"top" content"B端大客户账期有效,只有设置该类型…

javascript实现久久乘法口诀表、document、write、console、log

文章目录 正序乘法口诀表倒序乘法口诀表logconsoledocumentwrite 正序乘法口诀表 function multiplicationTable() {for (let i 1; i < 9; i) {let val ;for (let j 1; j < i; j) {document.write(j * i (i * j) &nbsp );val ${j}*${i}${i * j} ;}consol…

Vue第三篇:最简单的vue购物车示例

本文参考&#xff1a;Vue Cli&#xff08;脚手架&#xff09;实现购物车小案例 - - php中文网博客 效果图&#xff1a; 编写流程&#xff1a; 1、首先通过vue/cli创建工程 vue create totalprice 2、改写App.vue代码如下&#xff1a; <template><div><div v…

深入浅出对话系统——基于预训练语言模型的对话管理

引言 主要讲解三篇论文&#xff0c;主要思想是把自然语言理解、对话管理和自然语言生成三部分整合到一起。 先导知识 数据集 CamRest676MultiWOZ 都是用的自回归语言模型 causalGPT-2、Transformer Decoder 一个概念&#xff1a;delexicalization 通过相应的占位符替换…

基于IMX6ULL的AP3216C的QT动态数据曲线图显示

前言&#xff1a;本文为手把手教学 LinuxQT 的典型基础项目 AP3216C 的数据折线图显示&#xff0c;项目使用正点原子的 IMX6ULL 阿尔法( Cortex-A7 系列)开发板。项目需要实现 AP3216C 在 Linux 系统下的驱动&#xff0c;使用 QT 设计 AP3216C 的数据显示页面作为项目的应用层。…

websocket发布到iis之后无法创建连接访问

在做websocket测试时在本地的服务可以正常访问&#xff0c;在调试成功之后发布到了iis中&#xff0c;发现无法连接&#xff0c;这时可能有以下几个原因。 WebSocket无法连接到IIS&#xff1a; IIS版本不支持WebSocket&#xff1a;IIS 8.0及更高版本才支持WebSocket&#xff0…

从小白到大神之路之学习运维第61天--------Ansible自动化运维工具(playbook配置文件深入了解)

第三阶段基础 时 间&#xff1a;2023年7月14日 参加人&#xff1a;全班人员 内 容&#xff1a; playbook配置文件 目录 playbook配置文件 一、playbook配置文件概念 修改hosts文件 建立playbook配置文件 yml脚本写法注释&#xff1a; 二、Playbook的核心元素 三、…

如何破解中小企业数字化转型难点?建议来了!

打开任何一个搜索引擎&#xff0c;只要输入“中小企业数字化转型”&#xff0c;关于痛点、难处的文章就会铺面而来&#xff0c;难在哪里&#xff0c;其实很好解答&#xff0c;关键在于&#xff0c;如何解决这一个个难处。 PS&#xff1a;给大家整理了一份完整版的《中小企业如…

汽车供应链专场对接会 | 8月25日大会同期活动

爱普搜汽车供应链对接会&#xff0c;是根据采购商的项目需求&#xff0c;有针对性地组织全国各地采购商与供应商&#xff0c;进行面对面交流与沟通&#xff0c;促成实质性交易。参会群体为汽车行业制造型企业、主机厂、Tier1/2。 供应商在参加对接会前已做足功课&#xff0c;现…

C语言-ubuntu下的命令

目录 linux命令 【1】打开关闭终端 【2】终端 【3】ls命令 【4】cd 切换路径 【5】新建 【6】删除 【7】复制 【8】移动 【9】常用快捷键 【10】vi编辑器 【11】简单编程步骤 任务&#xff1a; linux命令 【1】打开关闭终端 打开终端&#xff1a; 1. 直接点击 …

File格式转换MultipartFile格式的例子

首先&#xff1a;需要先引入依赖包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.9</version> </dependency> 1.Multipartfile转File类型 //创建一…

一零六四、世界杯数据可视化分析(阿里云天池赛)

目录 赛制官方链接 活动背景 活动时间&#xff1a;即日起-12月31日17点 数据说明 世界杯成绩信息表&#xff1a;WorldCupsSummary 世界杯比赛比分汇总表&#xff1a;WorldCupMatches.csv 世界杯球员信息表&#xff1a;WorldCupPlayers.csv 代码实现 赛制官方链接 世界杯…

视频融合平台EasyCVR登录后通道数据及菜单栏页面显示异常的排查与解决

EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。 有用…

docker基础1——架构组成、安装配置

文章目录 一、发展起源1.1 传统虚拟化与容器虚拟化1.2 docker底层核心技术1.2.1 命名空间1.2.2 控制组 1.3 docker工作方式1.4 docker容器编排1.5 docker优劣势1.6 docker架构组成 二、yum安装docker三、配置docker加速器 一、发展起源 背景了解&#xff1a; 容器是内核里的一项…

上市公司前端开发规范参考

上市公司前端开发规范参考 命名规则通用约定文件与目录命名HTML命名CSS命名JS命名 代码格式通用约定HTML格式CSS格式JS格式注释 组件组件大小单文件组件容器组件组件使用说明Prop指令缩写组件通讯组件的挂载和销毁按需加载第三方组件库的规定 脚手架使用规范移动端脚手架PC端脚…

前端 Jenkins 自动化部署

由于公司使用自己搭建的 svn 服务器来进行代码管理&#xff0c;因此这里 Jenkins 是针对 svn 服务器来进行的配置&#xff0c;其实跟Git 配置基本一致。 在没有自动化部署前 之前项目每次修改之后都需要本地 ​​npm run build ​​一次手动发布到服务器上方便测试和产品查看…

Jenkins | 获取凭证密码

目录 方法一&#xff1a;查看所有账号及密码 方法二&#xff1a;查看指定账号密码 方法一&#xff1a;查看所有账号及密码 Jenkins > 系统管理 > 脚本命令行 com.cloudbees.plugins.credentials.SystemCredentialsProvider.getInstance().getCredentials().forEach{i…

nginx基础1——工作原理、安装配置、命令参数

文章目录 一、基本了解1.1 特性优点1.2 功能应用1.3 工作模块分类1.4 模块配置方法 二、工作原理三、安装与配置四、常用命令 一、基本了解 nginx简介&#xff1a; nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#x…

前端学习——ajax (Day1)

AJAX 概念和 axios 使用 axios 使用 练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …