【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;

    @PostConstruct
    public 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 {
    @Autowired
    private Student student;
    @PostConstruct
    public 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文件中设置环境参数
 


猜猜今日份心情~

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

session 生命周期和经典案例-防止非法进入管理页面

文章目录 session 生命周期和Session 经典案例-防止非法进入管理页面session 生命周期Session 生命周期-说明代码演示说明 Session 的生命周期创建CreateSession2创建ReadSession2 解读Session 的生命周期代码示例创建DeleteSession Session 经典案例-防止非法进入管理页面需求…

教你快速安装Bootstrap

目录 Bootstrap简介Bootstrap的下载Bootstrap的使用 Bootstrap简介 Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作,基于HTML、CSS、JavaScript开发的简洁、直观、强悍的前端开发框架,它会使Web开发更加快捷Bootstrap框架的优点 开发…

MFC加载3ds模型初步

网上下一个资源,名为 OpenGL三维场景绘制.rar; 看一下它是用MFC和opengl,自己绘制三维场景; 运行一下,有一个exe可以运行; 有一个较新版本的不能运行;这应是缺少VC运行库; 下面单独…

基于Selenium+Python的web自动化测试框架(附框架源码+项目实战)

目录 一、什么是Selenium? 二、自动化测试框架 三、自动化框架的设计和实现 四、需要改进的模块 五、总结 总结感谢每一个认真阅读我文章的人!!! 重点:配套学习资料和视频教学 一、什么是Selenium? …

坐标系变换的坑

坐标系变换的坑 坐标系变换本来是很简单的事情,公式也很简单。但是卡了我很多天,原因是:两个坐标系的位姿,虽然都是右手系,但我的在顺时针旋转是yaw角是递增的,同事发给我的却是逆时针递减的。 理论上很简…

使用openvpn docker及frp docker工具构建虚拟专业网络(V-P-N)

使用openvpn docker及frp docker工具构建虚拟专业网络(V-P-N) 借助Docker和OpenVPN技术,您可以在短时间内设置并运行VPN服务器,并保证您的服务器安全。 运行环境 Ubuntu 16.04 TLS Docker version 19.03.8, build afacb8b7f0 OpenVPN Android Client …

zabbix-server监控mysql数据库及httpd服务、监控apache、监控ftp

目录 一、监控mysql数据库及httpd服务 1、为server.Zabbix.com添加服务模板 2、server.zabbix.com服务端 操作 3、编辑chk_mysql.sh脚本 4、server.zabbix.com测试 二、监控apache 1、获取键值 2、服务器操作 3、zabbix监控web端导入监控模板 4、server.zabbix.com添加…

MediaType的常用类型-GPT问答

MediaType的常用类型-GPT问答 MediaType是一个枚举类,包含了常见的媒体类型。下面是一些常用的MediaType类型: APPLICATION_JSON:JSON格式的数据APPLICATION_XML:XML格式的数据APPLICATION_FORM_URLENCODED:表单格式的…

Baichuan-13B 介绍及微调

文章目录 Baichuan-13B介绍Baichuan-13B特点Baichuan-13B效果Baichuan-13B模型参数 推理和部署模型下载模型推理 微调和部署下载仓库配置环境微调数据微调过程 Baichuan-13B介绍 2023年7月11日,百川智能发布Baichuan-13B! github地址:https:…

【启发式算法】灰狼优化算法【附python实现代码】

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至&#…

【产品经理】小型团队通用工作流程SOP方案

:所谓SOP,即标准作业程序,指将某一事件的标准操作步骤和要求以统一的格式描述出来,用于指导和规范日常的工作。实际执行过程中sop核心是符合本企业并可执行,不流于形式。 一、跨部门工作流程 跨部门流程及职能如下图展…

6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文

6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文 一、捕获ICMP报文 打开Wireshark,选择网络接口并点击开始按钮。分组列表面板不断刷新抓渠道的数据包,为了过滤出我们所要分析的ICMP报文,我们在过滤框中输…

点大商城V2_2.5.0 全开源版 商家自营+多商户入驻 百度+支付宝+QQ+头条+小程序端+unipp开源前端安装测试教程

播播资源安装点大商城V2_2.5.0 全开源版测试后发现后台总体体验下来比较简洁,营销功能还是挺多该有的都有了,相比上一版优化很多细节。首页和会员中心均支持DIY装修,底部菜单也一样,安装测试中目前未发现BUG,小程序整体…

macOS 怎么安装redis数据库

1 访问redis数据库下载网址 http://download.redis.io/releases/ 访问上述的redis下载的网址,确定你想要的版本 然后下载即可 (我选则的是6.2.6) 然后下载 下载后 把这个文件解压,放在自己想要放在的位置 2 打开终端 输入对应的…

1770_VirtualBox下安装Debian

全部学习汇总: GreyZhang/little_bits_of_linux: My notes on the trip of learning linux. (github.com) 作为我自己的日常使用,Debian基本上没有出现过。最多是让它运行在某个设备上作为一个服务的平台,因为很多东西我懒得去配置。 Debia…

mysql中的Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests

Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests是什么? mysql服务器维护了很多状态变量(status variables),这些变量提供了其相关操作的信息。 我们可以通过SHOW [GLOBAL | SESSION] STATUS 查看这些变量以及变量值。这些变量有很多&…

Linux--获取最近一次的进程退出码:echo $?

举例&#xff1a; #include <stdio.h> int main() { printf("hello world,pid: %d,ppid: %…

面试题:redis是单线程、StringBuffer是线程安全的

1、说明String 和StringBuffer的区别 类底层/ 可变&#xff1f;线程安全Stringfinal char[] 不可变是StringBuffer char[] 可变 是&#xff08;synchronized方法&#xff09;StringBuilder char[] 可变否 (4条消息) Java基础&#xff1a;String、StringBuffer、…

Linux 漏洞扫描

Linux 漏洞扫描程序会仔细检查基于 Linux 的系统&#xff0c;以减轻潜在的风险和漏洞。 什么是 Linux 漏洞扫描程序 Linux 漏洞扫描程序是一种专门的漏洞扫描工具&#xff0c;旨在识别基于 Linux 的系统中的安全漏洞和弱点,它会扫描配置错误、过时的软件版本和已知漏洞。 为…

TypeScript 学习笔记 环境安装-类型注解-语法细节-类-接口-泛型

文章目录 TypeScript 学习笔记概述TypeScript 开发环境搭建 类型注解类型推断 数据类型JS的7个原始类型Array数组object、Object 和 {}可选属性 ? 和 可选链运算符?. function函数TS类型: any类型 | unknow类型TS类型: void类型TS类型&#xff1a;never类型 &#xff08;几乎…