1、在xml文件中直接获取,或者几个xml文件之间共享。
<!-- 加载全局配置文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/config/jdbc.properties</value>
<value>/WEB-INF/config/mail.properties</value>
<value>/WEB-INF/config/hibernate.properties</value>
</list>
</property>
</bean>
此种方式可以在这三个xml之间进行变量互相读取。也可以在本xml文件中读取。其它文件不能读取到此三个文件中的变量。
此种方式不仅仅局限于.properties文件,.xml也可以。
2、利用java.util.Properties读取属性文件
java 代码:
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("mail.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("mail.sender:"+properties.getProperty("mail.sender"));
3、在javaben中利用注解的方式获得属性文件信息。【此方法适合于spring2.5及以上版本使用】
【此方法是:通过get方法获取对应的属性信息,优点是代码中使用方便,缺点是如果代码中需用到新的属性信息,需对Mail.java做相应的添加修改】
定义一个javabean,利用注解将代码中需要使用的属性信息注入。、
Java代码
@Component("mail")
public class Mail {
@Value("${mail.user}"
private String user;
@Value("${mail.sender}")
private String sender;
@Value("${mail.stmp}")
private String stmp;
public String getUser() {
return user;
}
public String getSender() {
return sender;
}
public String getStmp() {
return stmp;
}
}
使用的时候,在业务类中注入该对象:
@Autowired
private Mail mail;
在spring的xml主文件中加入以下代码:
<context:component-scan base-package="com.meimei.business.model" />//此包中包含Mail对象。
4、采用自定义类,继承spring中的PropertyPlaceholderConfigurer类来实现java中获取属性key
1)、spring配置
<bean id="propertyConfigurer"
class="com.meimei.core.util.ReadPropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>/WEB-INF/config/jdbc.properties</value>
<value>/WEB-INF/config/mail.properties</value>
<value>/WEB-INF/config/hibernate.properties</value>
</list>
</property>
</bean>
2)、自定义类ReadPropertyPlaceholderConfigurer.java。【可以实现通过此类的getContextProperty获取到对应的属性了。】
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
/**
* 继承PropertyPlaceholderConfigurer类处理返回结果;
*
* @author yanghl
* @date 2013-03-24
*/
public class ReadPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
private static Map<String, Object> propertiesMap;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
propertiesMap = new HashMap<String, Object>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
propertiesMap.put(keyStr, value);
}
}
public static Object getContextProperty(String name) {
return propertiesMap.get(name);
}
}
3)、在业务类中获取属性文件的内容
String mailStmp = (String)ReadPropertyPlaceholderConfigurer.getContextProperty("mail.stmp");
<!-- 加载全局配置文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/config/jdbc.properties</value>
<value>/WEB-INF/config/mail.properties</value>
<value>/WEB-INF/config/hibernate.properties</value>
</list>
</property>
</bean>
此种方式可以在这三个xml之间进行变量互相读取。也可以在本xml文件中读取。其它文件不能读取到此三个文件中的变量。
此种方式不仅仅局限于.properties文件,.xml也可以。
2、利用java.util.Properties读取属性文件
java 代码:
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("mail.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("mail.sender:"+properties.getProperty("mail.sender"));
3、在javaben中利用注解的方式获得属性文件信息。【此方法适合于spring2.5及以上版本使用】
【此方法是:通过get方法获取对应的属性信息,优点是代码中使用方便,缺点是如果代码中需用到新的属性信息,需对Mail.java做相应的添加修改】
定义一个javabean,利用注解将代码中需要使用的属性信息注入。、
Java代码
@Component("mail")
public class Mail {
@Value("${mail.user}"
private String user;
@Value("${mail.sender}")
private String sender;
@Value("${mail.stmp}")
private String stmp;
public String getUser() {
return user;
}
public String getSender() {
return sender;
}
public String getStmp() {
return stmp;
}
}
使用的时候,在业务类中注入该对象:
@Autowired
private Mail mail;
在spring的xml主文件中加入以下代码:
<context:component-scan base-package="com.meimei.business.model" />//此包中包含Mail对象。
4、采用自定义类,继承spring中的PropertyPlaceholderConfigurer类来实现java中获取属性key
1)、spring配置
<bean id="propertyConfigurer"
class="com.meimei.core.util.ReadPropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>/WEB-INF/config/jdbc.properties</value>
<value>/WEB-INF/config/mail.properties</value>
<value>/WEB-INF/config/hibernate.properties</value>
</list>
</property>
</bean>
2)、自定义类ReadPropertyPlaceholderConfigurer.java。【可以实现通过此类的getContextProperty获取到对应的属性了。】
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
/**
* 继承PropertyPlaceholderConfigurer类处理返回结果;
*
* @author yanghl
* @date 2013-03-24
*/
public class ReadPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
private static Map<String, Object> propertiesMap;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
propertiesMap = new HashMap<String, Object>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
propertiesMap.put(keyStr, value);
}
}
public static Object getContextProperty(String name) {
return propertiesMap.get(name);
}
}
3)、在业务类中获取属性文件的内容
String mailStmp = (String)ReadPropertyPlaceholderConfigurer.getContextProperty("mail.stmp");