Get value from properties file outside a jar using Spring

来源:互联网 发布:spss问卷数据录入教程 编辑:程序博客网 时间:2024/05/29 16:26
I have a jar file which need to dynamically load external properties file and read values from this properties file. Those values are needed in the java program. With Spring, it's very easy to do that.

1. create a config.properties

portlet.groupId=com.rujuanportlet.artifactId=hello-world

2. config your applicationContext.xml. 

The bean PropertyPlaceholderConfigurer. It provides the functionality which we can use the properties file inside jar or use external properties file.

The second thing is how we get those values in the property. Here I wrote a POJO class, and config those key as as property in the POJO class.

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="    http://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-3.1.xsd          http://www.springframework.org/schema/beans     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd          http://www.springframework.org/schema/jdbc     http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"><beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="ignoreResourceNotFound" value="true" /><property name="locations"><list><value>classpath:defaultconfig.properties</value><value>file:${target_env}</value></list></property></bean><bean id="createPortlet" class="com.rujuan.Portlet"><property name="groupId" value="${portlet.groupId}" /><property name="artifactId" value="${portlet.artifactId}" /></bean> </beans>


3. POJO class: Portlet.java

public class Portlet {private String groupId;private String artifactId;public String getGroupId() {return groupId;}public void setGroupId(String groupId) {this.groupId = groupId;}public String getArtifactId() {return artifactId;}public void setArtifactId(String artifactId) {this.artifactId = artifactId;}}

4. Last thing, our main class: PortletCreatorMain

import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class PortletCreatorMain {/** * @param args */public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Portlet portlet = context.getBean("createPortlet", Portlet.class);System.out.println(portlet.getArtifactId());}}
In this case, you can get the value from Portlet properties.

原创粉丝点击