从.properties文件中获取配置数据的方法小结

关于读入.properties配置文件数据,有很多方法,比如利用ResourceBundle.getString(“”),Property.getProperty(“”).toString(),@Value(“${}”),Environment.get等方法

ResourceBundle

System.setProperty("spring.profiles.active", "dev");//设置classPath下的指定目录

  ResourceBundle rb = ResourceBundle.getBundle(classPath下的相对路径);//不用加后缀
  BASE_URL = rb.getString("BASE_URL");

很省事不用写后缀,但是在Junit下时,不知名原因,导致加载不成功,也有可能是是Junit版本低造成的,我试到4.9都没成功。。

Properties

Properties prop = new Properties();
String realPath =“.properties”//相对绝对路径都可以,但是要有properties;
String value= prop.getProperty("goopalpayPay_key").toString();

利用这种方法配置环境,在Junit下利用绝对路径(String dir=System.getProperty(“user.dir”);)也能跑通测试,但是每次切换环境时,修改太麻烦。当时考虑用抛异常的方式切换,但是这是不靠谱的。

PropertyPlaceHolder

编程方式取得Spring上下文的Properties

Environment

利用
@PropertySource(value=”file:绝对路径”)或者@PropertySource(value=”classPath:相对路径”)进行读取
需要事先EvironmentAware接口,重写里面的setEnvironment方法创建Environment对象
@Autowired
Environment env;

在使用的方法中,创建一个ApplicationContext实例,利用他的getEnvironment方法对重写的setEnvironment赋值,然后用getProperty(“xxx”)方法获取properties文件中的数据

@Configuration
@PropertySource(value = "file:E:/dev-chinagpay.properties")
public class Config implements ApplicationListener<ContextRefreshedEvent> ,EnvironmentAware {

  @Autowired
  private Environment env;

  public static void main (String[] args)
  {
    ApplicationContext ctx = new GenericApplicationContext();
    ct.setEnvironment(ctx.getEnvironment());
    System.out.println(ct.getProperty("user.dir"));
    System.out.println(ct.env);
  }

  @Override
    public void setEnvironment(Environment environment) {
        this.env=environment;
    }
}

@Value

在applicationContext中配置


这句话的意思是在启动spring时,扫描dev目录下所有的.properties文件,并以key-value的形式存入

在需要使用properties文件中的预设值时,直接采用

[@Value("${xxx}")
private String xxx;](http://blog.csdn.net/tornadowp/article/details/8049548)

进行值的获取与使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kiba_zwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值