为什么要将信息放入配置文件中?
Java 项目中难免有一些配置信息(例如服务器名称,地址和端口号等等),为了实现一套代码多处部署使用,需要将这些配置信息提取到配置文件,在程序运行的时候获取,省去了为不同系统维护不同代码的麻烦。
在 Spring Boot 项目中实现配置文件信息的获取
在 Spring Boot 项目中读取配置文件的信息主要有以下两个方式:
@Value
注解:适合读取单条的配置信息。
@ConfigurationProperties
注解:适合读取一组配置信息。
准备配置文件
假定我们需要在程序中使用如下的配置信息:
application.yml:
其中前缀为 my 的信息通过@Value
读取,前缀为 test 的信息通过@ConfigurationProperties
读取。
使用 @value 读取配置信息
@Value 注解的书写规则为:@Value("${属性名:默认值}")
。如果属性名在配置文件中不存在,则将默认值注入到变量中。
使用 @ConfigurationProperties 读取配置文件
依照例子中的自定义信息格式,编写其对应的 Data Class 如下:
需要使用这些配置的时候只需 Autowire 这个 class 即可:
后续
对于更为复杂的属性文件解析,请阅读 SpringBoot 复杂配置信息读取
SpringBoot加载自定义配置文件_红藕香残玉簟秋的博客-CSDN博客
SpringBoot自定义配置文件(xxx.properties)_qq_31351071的博客-CSDN博客_springboot 自定义配置
spring boot项目-静态属性从配置文件取值
1.问题描述:
某常量类,部分属性声明不能使用明文或硬编码,即在这个java文件里不能出现明文,作为加密函数的参数也不行,也不能声明在其他java文件(这样对于代码安全扫描等于没处理)。于是,这种情况下就需要写在配置文件里。
2.分析与查找:
特别注意这是给静态属性赋值,试了下使用常规的@Value的方式没成功,感觉就算有成功途径也会很麻烦,所以决定换个方式。
在论坛看了几篇帖子,试了一个文件缓存流读取配置文件,然后用静态代码块完成赋值的方式,觉得比较好(传送门:https://blog.csdn.net/xibei19921101/article/details/107342434)。
这里简要记录一下。
3.解决方法:
上代码片段:
这个类的静态属性赋值在一个静态代码块中完成,仅在这个类加载时执行一次。
PS:使用BufferedInputStream起到缓存的作用。里面new FileInputStream(new File(“相对路径”))的方式与new FileInputStream(“相对路径”)的方式差不多,实际上后者在执行时还是用的前者的方式,具体可以去扒源码。