java 加载properties 文件的多种方法

这里介绍两种技术:利用spring读取properties 文件和利用java.util.Properties读取

(一)利用spring读取properties 文件

利用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader来读取属性文件

构造如下config.properties文件properties代码

userDao.class=com.spring.dao.UserDao 

属性文件中的"userDao"名称即是Bean的别名设定,.class用于指定类来源。

然后利用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader来读取属性文件

   BeanDefinitionRegistry reg = new DefaultListableBeanFactory();

   PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg);

   reader.loadBeanDefinitions(new ClassPathResource("config.properties"));

   BeanFactory factory = (BeanFactory)reg;

   UserDao userDao = (UserDao)factory.getBean("userDao");

(二)利用java.util.Properties读取属性文件

1.    String str=File.separator;

        InputStream path=this.getServletContext().getResourceAsStream(str+"WEB-INF"+str+"classes"+str+"password.properties");

        //InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("password.properties");

    /*File filepath=new File(this.getServletContext().getRealPath(str+"WEB-INF"+str+"classes")+str+"password.properties");

        InputStream path=new FileInputStream(filepath);*/

        Properties pros = new Properties();

        try {

            pros.load(path);

        } catch (IOException ex) {

            //System.out.println("file is not exist");

            errorMessage="资源文件不存在";

        }

        System.out.println("username:"+p.getProperty("username")+",password:"+p.getProperty("password"));

2.    import org.springframework.core.io.ClassPathResource;

        ClassPathResource cr = new ClassPathResource("password.properties");//会重新加载spring框架

        Properties pros = new Properties();

        try {

            pros.load(cr.getInputStream());

        } catch (IOException ex) {

            //System.out.println("file is not exist");

            errorMessage="资源文件不存在";

        }

 

3.使用java.util.Properties类的load()方法

示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));

Properties p = new Properties();

p.load(in);

 

4.使用java.util.ResourceBundle类的getBundle()方法

示例: ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());

 

5.使用java.util.PropertyResourceBundle类的构造函数

示例: InputStream in = new BufferedInputStream(new FileInputStream(name));

ResourceBundle rb = new PropertyResourceBundle(in);

 

6.使用class变量的getResourceAsStream()方法

示例: InputStream in = JProperties.class.getResourceAsStream(name);

Properties p = new Properties();

p.load(in);

 

7.使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法

示例: InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);

Properties p = new Properties();

p.load(in);

 

8.使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法

示例: InputStream in = ClassLoader.getSystemResourceAsStream(name);

Properties p = new Properties();

p.load(in);

你可能感兴趣的:(properties)