Get value from properties file outside a jar using Spring

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.rujuan
portlet.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">

	<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.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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值