前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoolt框架获取properties配置文件值的三种方式

SpringBoolt框架获取properties配置文件值的三种方式

作者头像
Java深度编程
发布2020-06-10 16:13:46
1.4K0
发布2020-06-10 16:13:46
举报
文章被收录于专栏:Java深度编程

前言:

Spring框架是主流框架,使用过程中经常需要在properties配置文件中配置数值,而有时候又需要在代码中获取其值。下面就为大家介绍获取配置值的三种方式:

第一种方式:使用注解@Value("属性名")

代码:

代码语言:javascript
复制
@Value("${jcpt.domain}")
private String domain; //基础平台域名

易错点:如果变量名被static修饰,是无法注入值的:

代码语言:javascript
复制
@Value("${jcpt.domain}") //被static修饰的变量无法注入值
private static String domain; //基础平台域名

解决办法: 将注解转移到set方法上:

代码语言:javascript
复制
public class A {

  private static String domain; //基础平台域名

  @Value("${jcpt.domain}")
   public void setDomain(String domain) {
        A.domain = domain;
   }
}

但是要注意的是:“如果set方法也被statis修饰的话,也是无法注入值的!”

第二种方式:

使用注解@ConfigurationProperties(prefix = "属性名")

该方式是通过反射将值映射到bean,从而实现赋值。

代码:

properties配置文件:

代码语言:javascript
复制
###第三方跳转是否走基础数据平台验证的开关
es.security.common.isBoolean = false
//注意配置文件的属性名必须是 “注入的属性名.” + "对象名." + "对象属性名“

java类:

代码语言:javascript
复制
@ConfigurationProperties(prefix = "es.security")
public class SecurityMainProperties {
    /**
     * 通用属性配置
     */
    private CommonProperties common = new CommonProperties();
    //get ,set ……
    }

CommonProperties类:

代码语言:javascript
复制
public class CommonProperties {

    private boolean isBoolean=true;
    //get,set ……
}

原理:

1.首先@ConfigurationProperties中指明了配置未见的路径“es.security”也就表名了这个类下的属性要匹配properties配置文件中带有es.security前缀的值;

2.SecurityMainProperties 类中有CommonProperties的对象属性,属性名叫common,这个变量名正好对应“es.security.common”,而common是个对象,所以继续向下映射CommonProperties类下的isBoolean属性,这个属性整对应了完整的配置文件中的“es.security.common.isBoolean”。

第三种方式(不推荐):读取配置文件,再解析

我们可以采用IO流先将配置文件只能够的值全部读取出来,再进行匹配

代码语言:javascript
复制
StringBuffer buffer = new StringBuffer();
//获取资源模版文件
File sources= ResourceUtils.getFile("classpath:keyWord.txt");
BufferedReader bf = new BufferedReader(new FileReader(sources));
String s ;
while((s = bf.readLine())!=null){
    buffer.append(s.trim());
}

通过以上的代码能够将配置文件的所有值连接成字符串,再进行解析即可。此方式较为愚蠢,不建议使用。此方式只适合获取配置文件的全部值,若取局部值建议使用前两种方式。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java深度编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档