一、配置高级
1.临时属性设置
1.1引出问题
-
如果目标电脑上8080端口已经使用,再次使用该端口会出现端口占用问题
-
解决方式
- 重新更换配置文件修改端口打包
- 通过临时属性配置新端口
- 更换配置文件
1.2添加临时属性配置
-
通过临时属性修改8080端口
java -jar 项目.jar --server.port=8081
-
添加web部分使用 dbug 日志
java -jar springboot-ssm-0.0.1-SNAPSHOT.jar --server.port=8081 --logging.level.org.springframework.web=debug java -jar springboot-ssm-0.0.1-SNAPSHOT.jar --server.port=8081 --logging.level.root=debug
-
可以分别对
root
,web
,hibernate
进行临时日志设置
2.属性加载优先级
-
文档地址
https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config
-
优先级说明
-
注意:从上往下优先级越来越高
-
开发中使用的是3,刚才使用命令行使用的是11
-
在开发中,会遇见自己定义属性名和系统变量名一致的情况,导致自己配置的数据被覆盖
user: name: sy
-
实际取出来值是电脑用户名称值
-
以后如果你们再开发中,自己定义变量但是发现取出来的不是想要的值时,优先考虑属性优先级问题
-
3.开发环境使用临时属性设置
-
设置主流方式步骤
-
了解内容
public static void main(String[] args) { args[0] = "--server.port=9999"; SpringApplication.run(SpringbootSsmApplication.class, args); }
-
问题:如果需要修改的配置很多,那么使用这种手动输入的方式很容易出错,可以通过配置文件解决
4.配置文件分类
- 类路径下配置文件
- 开发人员使用
- 类路径下config目录下配置文件
- 项目经理、技术经理使用
- 程序包所在目录中配置文件
- 运维人员、架构师使用
- 程序包所在目录中config目录下配置文件
- 最高等级,技术总监
- 应用场景
- A 开发项目时候使用的是类路径下配置文件
- A 开发完成之后,需要部署到测试环境,需要修改配置
- 测试B测试出问题,A 需要去修改bug(需要把配置修改回来)
- 测试没问题之后,A需要再次修改生产环境的配置
4.1类路径下配置文件
-
类路径下配置文件:就是我们默认使用的配置文件,优先级是最低
4.2类路径下config目录下配置文件
-
类路径下config目录下配置
4.3程序包所在目录中配置文件
-
程序包所在目录中配置文件
4.4程序包所在目录中config目录下配置文件
-
程序包所在目录中config目录下配置文件
4.5通过临时变量设置配置文件
-
通过名称设置图示
-
通过具体路径设置具体文件
5.@ConfigurationProperties
5.1.回顾基础使用
-
绑定类
@Data @Component @ConfigurationProperties(prefix = "dbconfig") public class DbConfig { private String url; private String username; }
-
配置文件
dbconfig.url=123123 dbconfig.username=sy
-
加入如下的依赖,可以解决提示问题
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </dependency>
5.2配置第三方类
-
配置德鲁伊连接池
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.15</version> </dependency>
-
配置三方bean
@Bean @ConfigurationProperties(prefix = "druid") public DruidDataSource dataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); return druidDataSource; }
6.宽松绑定/松散绑定
-
如果你这样配置会报错
@Component @ConfigurationProperties(prefix = "dbConfig") public class DbConfig { private String url; private String username; }
-
报错如下
-
宽松绑定
dbConfig.url=123123 dbConfig.user_name=sy db-config.PASSWORD=12345223123 db-config.home-address=bj
@Data @Component @ConfigurationProperties(prefix = "db-config") public class DbConfig { private String url; private String username; private String password; private String homeAddress; }
7.常用计量单位绑定
-
配置时间需求
db-config.timeout=600
-
使用 Duration 表示时间
@DurationUnit(ChronoUnit.HOURS) private Duration timeout;
-
使用DataSize来表示空间
@DataSizeUnit(DataUnit.MEGABYTES) private DataSize datasize;
8.检验
-
导入依赖
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> </dependency>
-
检验配置如下
@Max(value = 9999,message = "无效的配置") @Min(value = 80,message = "无效的配置") private int port;
9.数据类型转换
-
之前学生出现的一个问题
-
他的密码 010101
-
配置文件中,可以通过引号的方式解决
-
boolean 类型直接使用 true / false