我正在尝试导入属性文件以确定我需要哪个导入。 我看了下面的内容,他们似乎没有确切的答案:
http://blog.springsource.com/2011/02/15/spring-3-1-m1-unified-property-management/ http://stackoverflow.com/questions/1520055/import-spring-config-file-based-on-property-in-properties-file
他们很接近,但不完全是我正在寻找的。 p>
<beans:bean id="propertiesResource" class="org.springframework.jndi.JndiObjectFactoryBean"
p:jndiName="java:comp/env/url/resource/avcs" p:defaultObject="classpath:avcs.properties"/>
<beans:bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<beans:property name="location" ref="propertiesResource"/>
</beans:bean>
<context:property-placeholder properties-ref="propertiesResource" system-properties-mode="ENVIRONMENT"/>
<beans:import resource="applicationContext.${application.context.import}.xml"/>
所以我需要使用JNDI查找来获取文件,然后加载属性然后导入特定的应用程序上下文。 如果我只使用带有类路径资源的property-placeholder,那么我相信一切都会很好但是在这种情况下我需要首先查找JNDI,并且看起来优先顺序将导入放在JNDI之前。
任何人都有机会找到答案吗?
我还有其他一些想法,但我只是想知道是否有人可能已经解决了这个问题。
提前致谢。
答案 0 :(得分:1)
我相信你必须做这样的事情。我还没有对它进行测试,但基本上PropertyPlaceholderConfigurer中的setLocations方法接受了一个Resource数组(在我们的例子中是UrlResource - http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/core/io/UrlResource.html),后者又有一个带有文件路径的构造函数。
<jee:jndi-lookup id="mypropsfile1" jndi-name="myPropsFile1" default-value="file:///C:/defaultPath" resource-ref="true"/>
<jee:jndi-lookup id="mypropsfile2" jndi-name="myPropsFile2" resource-ref="true"/>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" depends-on="mypropsfile1,mypropsfile2">
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="locations">
<list>
<bean class="org.springframework.core.io.UrlResource">
<constructor-arg><ref bean="mypropsfile1"/></constructor-arg>
</bean>
<bean class="org.springframework.core.io.UrlResource">
<constructor-arg><ref bean="myPropsFile2"/></constructor-arg>
</bean>
</list>
</property>
</bean>
检查此讨论here。依赖将有助于设置特定bean的依赖关系。