javaWeb_读取配置文件

时间:2022-07-20 13:16:12

方法一:直接读取文件

public class ApiUrl {

public static ApiUrl getInstance(){

if (null == instance){

instance = new ApiUrl();

instance.initParams();

}

return instance;

}

private void initParams(){

     InputStream in = getClass().getClassLoader().getResourceAsStream("/interface.properties");

     Properties propertise = new Properties();

     try {

propertise.load(in);

         for (Map.Entry<Object, Object> prop : propertise.entrySet()){

         String propertyName = (String)prop.getKey();

         String propertyValue = (String)prop.getValue();

         switch (propertyName){

         case "UserName":

             name= propertyValue;

         break;

         }

         }

         

} catch (IOException e) {

e.printStackTrace();

}

}

private ApiUrl(){}

private static ApiUrl instance;

private String name;

}

 

方法二:使用分散配置:

新创建一个data.properties文件,内容如下:

UserName=张三

Age=23

使用spring的特殊bean来完成。

<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">

<property name="locations">

<list>

<value>classpath:data.properties</value>

</list>

</property>

</bean>

然后就可以在xml配置文件中引用配置:

<bean id="userService" class="com.service.UserService">

<property name="name" value="${UserName}"/>

<property name="age" ref="${Age}"/>

</bean>

 

也可以在类中直接使用:

@Configuration

public class UserConfig {

    @Value("${UserName}")

    private String userName;

 

    @Value("${Age}")

    private String age;

}

 

方法三:自定义分散配置类

 

public class PropertyConfigurerUtils extends PropertyPlaceholderConfigurer {

    private static Map<String, String> propertiesMap = new HashMap<String, String>();

 

    @Override

    protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {

        super.processProperties(beanFactoryToProcess, props);

        for (Object key : props.keySet()) {

            String keyStr = key.toString();

            String value = props.getProperty(keyStr);

            System.out.println(key+" : " +value);

            propertiesMap.put(keyStr, value);

        }

    }

 

    public static String getProperty(String name) {

        return propertiesMap.get(name);

    }

}

spring配置文件中配置:

    <bean class="cn.harvetech.util.common.PropertyConfigurerUtils">

        <property name="locations">

            <list>

                <value>classpath:system.properties</value>

                <value>classpath:config.properties</value>

            </list>

        </property>

    </bean>

使用的时候:

PropertyConfigurerUtils.getProperty(Const.CANCEL_MESSAGE);