Get value from properties file outside a jar using Spring
3301 ワード
I have a jar file which need to dynamically load external properties file and read values from this properties file.Those values are need in the java program.with Spring,it's very to do that.
1.create a config.properties
The bean PropertyPlaceholderConfigrer.It provides the functinality 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 property in the POJO class.
1.create a config.properties
portlet.groupId=com.rujuan
portlet.artifactId=hello-world
2.config your appication Contect.xml. The bean PropertyPlaceholderConfigrer.It provides the functinality 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 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">
<bean
class="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.javapublic 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: Portlet Creator Main
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.