平时要大量创建模块时,可以直接复制模块,打开project的目录:
复制粘贴:
进入副本,修改pom文件中的Maven坐标,注意,GAV坐标必须改,name和description随便,也可以删掉,name的值就是IDEA中maven栏的模块名,当这个值为空时,则取artifactId的值
删掉多余的文件,留一个src和pom文件就行,iml文件一会儿用IDEA打开模块会重新生成。
使用IDEA打开:
成功:
SpringBoot默认配置文件application.properties
,通过键值对配置对应属性
# 修改服务器端口
server.port=80
# 关闭运行日志图标(banner),即Spring的那个轮廓图不要了
spring.main.banner-mode=off
# 放一张自己的图做为服务启动的banner,图片放resources目录下
spring.banner.image.location=mylogo.png
#设置日志相关,默认info,debug级别太细
logging.level.root=debug
# 某个包下使用error级别的日志
logging.level.com.llg=error
SpringBoot中导入对应starter后,提供对应配置属性,书写时也出现相应的提示。更多属性及含义,可以去官网文档:https://docs.spring.io/spring-boot/docs/…
SpringBoot属性配置文件,可用properties、yml、yaml格式,常用yml文件:
application.properties > application.yml > application.yaml
- 不同配置文件中相同配置按照加载优先级相互覆盖
- 不同配置文件中不同配置全部保留
关于写配置文件中的属性时,没有提示的解决方案:
打开项目结构,这次不看Moudles,选择Facets,再点击你要操作的模块名,然后点击绿叶标志的按钮
点击+,把两个yml文件的配置文件加进来:
此时,项目中yml的图标已变成了Spring配置文件的图标
yaml文件介绍:
yaml,一种数据层序列化格式,文件扩展名为.yml(主流)和.yaml。优点:
yaml文件语法:
只允许使用空格,不是tab
,空格数量不限属性值前添加空格
数组
数据在数据书写位置的下方使用减号做为数据开始的符号
,每行写一个数据,减号与数据间加空格
方式一: 使用@Value读取单个数据,属性名引用方式:
${一级属性名.二级属性名}
//演示下取对象数组中某个对象的属性
@Value("${users[0].age}")
private String age;
另外,在yaml配置文件内部,也可以使用dollar大括号来优化,做到一改全改:
addr: ${nacos-addr:nacos-headless}
当属性中出现转义字符,想让这个字符生效,必须加双引号,不加则按普通字符处理。
lesson: "Spring\tboot\nlesson"
方式二: 封装全部数据到
Environment对象
,再使用getProperty(“属性名”)
上面的方式中,想取个值,还得定义个变量去装,如此,如果一次性取多个值,岂不是乱了?==> Environment对象
,通过自动装配,将所有数据封装到Environment对象中
,取数据直接调用getProperty()
方法,如此就节约了变量的定义。
方式三: 自定义对象封装指定数据,注解+prefix属性来说明要封装哪一块数据
上面的方式用一个对象封装所有配置数据,能不能有针对性的封装呢?比如:
datasource:
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test_db
username: root
password: root123
思路大概是:
//注意属性名要和配置文件中的字段保持一致
@Setter
@Getter
public class MyDataSource{
private String driver;
private String url;
private String username;
private String password;
}
思考?
Spring拿到配置文件的值了,怎么给你的这个类的对象赋值? ⇒ 这个对象得受Spring控制 ⇒ 做为Bean => 加@Component
再思考?配置信息那么多字段,Spring怎么知道你要谁 ⇒ 指定要加载的数据 ⇒ @ConfigurationProperties
//如此,配置文件中的信息就会加载到我这个自定义的对象中
@Setter
@Getter
@Component
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource{
private String driver;
private String url;
private String username;
private String password;
}
注入下MyDataSource这个Bean,看下属性是否都拿到了
@Autowired
private MyDataSource datasource;
server:
servlet:
context-path: /test123
查看启动日志,发现tomcat的context path变了:
这个数据怎么进去的?就是用封装对象的方式+@ConfigurationProperties注解去拿的。(当然改完context-path后,调接口的api路径也就得变了,/访问不通了)
后期引入一种技术后,在配置文件中写配置就能生效,其实就是用读取yaml的第三种方式,将对应的配置加载到一个个自定义的对象中,提供给技术框架来使用。