Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件,用来配置应用程序的一些信息,通过键值对的形式来保存。
一、通过spring的形式读取
1、spring配置文件:
- <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value>classpath:jdbc.properties</value>
- </list>
- </property>
- </bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
2、自定义一个读取Properties属性文件的类,继承自org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
- public class CustomizedPropertyPlaceholderConfigurer extends
- PropertyPlaceholderConfigurer {
- private static Map<String, Object> ctxPropertiesMap;
- @Override
- protected void processProperties(
- ConfigurableListableBeanFactory beanFactoryToProcess,
- Properties props) throws BeansException {
- super.processProperties(beanFactoryToProcess, props);
- ctxPropertiesMap = new HashMap<String, Object>();
- for (Object key : props.keySet()) {
- String keyStr = key.toString();
- String value = props.getProperty(keyStr);
- ctxPropertiesMap.put(keyStr, value);
- } www.2cto.com
- }
- public static Object getContextProperty(String name) {
- return ctxPropertiesMap.get(name);
- }
- }
public class CustomizedPropertyPlaceholderConfigurer extends
PropertyPlaceholderConfigurer {
private static Map<String, Object> ctxPropertiesMap;
@Override
protected void processProperties(
ConfigurableListableBeanFactory beanFactoryToProcess,
Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
ctxPropertiesMap = new HashMap<String, Object>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
ctxPropertiesMap.put(keyStr, value);
} www.2cto.com
}
public static Object getContextProperty(String name) {
return ctxPropertiesMap.get(name);
}
}
3、读取属性文件内容
String host = (String) CustomizedPropertyPlaceholderConfigurer.getContextProperty("mail.smtp.host");
二、利用java.util.Properties读取属性文件
1、
- InputStream path=this.getServletContext().getResourceAsStream("password.properties");
- //InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("password.properties");
- /*File filepath=new File(this.getServletContext().getRealPath("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"));
InputStream path=this.getServletContext().getResourceAsStream("password.properties");
//InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("password.properties");
/*File filepath=new File(this.getServletContext().getRealPath("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、
- 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="资源文件不存在";
- }