从.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)

进行值的获取与使用

你可能感兴趣的:(开发细节经验,数据,spring)