java获取spring属性文件方式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java获取spring属性文件方式

java获取spring属性文件方式

 2013/10/21 12:11:17  yanghelin  程序员俱乐部  我要评论(0)
  • 摘要:1、在xml文件中直接获取,或者几个xml文件之间共享。<!--加载全局配置文件--><beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><propertyname="locations"><list><value>/WEB-INF/config/jdbc.properties</value><
  • 标签:文件 Java 获取Spring Spring 方式
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");
发表评论
用户名: 匿名