目录
一、安装插件
二、创建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程序开发。
知道Spring Boot的优点?
(1)快速集成框架:Spring Boot提供了启动添加依赖的功能,用于秒级集成各种框架;
(2)内置运行容器:无序配置Tomcat和Web容器,直接运行和部署程序;
(3)快速部署项目:无需外部容器即可启动并运行项目;
(4)使用注解和配置的方式进行开发:不需要繁琐的XML文件;
(5)支持更多的监控的指标,可以更好的了解项目的运行情况。
可能有些还不太理解,但是后面学习完之后可能会对它的优点有一个更深入的理解。
创建好之后,引入依赖!(个人感觉这是最难的一步,因为网络不好,你怎么引入都引入不进来,非常的崩溃)而且我还遇见一个问题,就是创建的pom文件中自动生成的是2.7.13.RELEASE这个版本,怎么切换网络都不行,最后发现IDEA生成的这个版本官网上就不存在!因此将版本改为2.7.13即可!最后包也引入成功了,但是pom文件中有一处还是标红,但是不影响使用,如果有知道这个问题的小伙伴可以告诉我下~
如果有小伙伴不想安装这个插件,当然也可以使用网页版进行项目的创建。
打开网址:https://start.spring.io
在创建好项目之后,会自动生成一个主函数,我们运行一下,成功了才真正说明我们这个项目创建成功了。
在网址输入:
注意:在学习Spring Boot的时候,最大的一个感受就是:最难的不是写代码,而是配置环境。后来经过一定的学习又感受到,在Spring Boot阶段,最重要的一个准则就是:约定大于配置!
比如,在上面测试项目是否创建成功,就是Spring Boot约定大于配置的一个体现。
因为我们在之前的原生项目中,将bean交给Spring管理,需要在xml文件中配置扫描路径,而在Spring Boot中,约定会扫描启动类所在的路径以及子路径,比如下面这个例子:
如果不在类扫描路径下,那么就会报错。
问题1:Spring Boot与Servlet项目的区别?
Spring Boot的配置文件主要有两个:.properties和.yml。
配置文件的格式:application.yml和application.properties(application的名字也不能修改)。
这两个文件相当于手机的老款(.properties)和新款(.yml)一样,功能都是一样的。如果在两个文件都存在的时候,两个都会生效;不过在两者发生冲突的时候,以.properties为准。(但加载完.properties文件后,也会加载.yml文件)。一般实际业务中,我们只选取一种即可。
执行main方法结果:
注意:如果再次打开IDEA,发现.properties文件的中文注释变为了乱码:
乱码是不可逆的,设置好编码格式之后,重写乱码内容,下次打开就好了。
(3)properties 缺点分析
properties 配置⽂件中会有很多的冗余的信息,⽐如这些:因此使用yml文件的格式化来解决。
yml就是YAML,全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
注意:英文冒号后面有空格,空格不能省略。
#布尔值
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);
}
}
总结:
- 字符串默认不⽤加上单引号或者双引号。
- 单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据。
- 双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思。
补充:我们之前创建一个类的时候,属性如果为私有的,要设置它的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);
}
}
执行结果
注意不要弄混了。
.yml配置文件
Student类 :
调用类的方法:
执行结果:
Student类:
执行结果:
总结:
(1)配置数据库,基本数据类型,字符串等:用@Value("${ }")读取
(2)配置对象,集合,map:读取的方式都是@ConfigurationProperties(prefix = "");
(注意看读取集合中使用的各种注解,以及各种文件之间的对应关系!)
总结:.properties 与. yml文件的区别
- properties 是以 key=value 的形式配置,⽽ yml 使⽤的是key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。
- properties 配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。
- yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等;
- yml ⽀持更多的数据类型。
代码演示:设置如下的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;
猜猜今日份心情~