我对PropertySourcesPlaceholderConfigurer
有疑问。目前,我正在将一些配置从xml迁移到java配置。我通过xml文档中的PropertyPlaceholderConfigurer
配置加载了属性文件。我遇到的问题是,现在,当我使用PropertySourcePlaceholderConfigurer
创建java配置类时,有一个属性从系统和环境属性加载,而不是尝试从我拥有的属性文件加载。使用PropertyPlaceHolderConfigurer
bean可以使用
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
这样,选择的属性就是系统中的属性。但我在PropertySourcesPlaceHolderConfigurer
中找不到与此相似的任何内容。实际上,在这种情况下,它正在做相反的事情。不配置任何东西总是喜欢系统中的任何东西。
我使用属性的方式是通过@Value
注释,始终失败的属性是java.naming.factory.initial,用于jms连接工厂
这是我的java配置
@Configuration
@PropertySources(@PropertySource("classpath:config.properties"))
public class JndiConfig {
@Value("${java.naming.factory.initial}")
private String factoryInitial;
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
这是config.properties
java.naming.factory.initial=fiorano.jms.runtime.naming.FioranoInitialContextFactory
我得到的日志就是这些。这里选择了注入的属性fiorano.jms.runtime.naming.FioranoInitialContextFactory
DEBUG 2015-07-16 15:25:33,269(org.springframework.core.env.PropertySourcesPropertyResolver) - 在[environmentProperties]中搜索关键'java.naming.factory.initial'
DEBUG 2015-07-16 15:25:33,269(org.springframework.core.env.PropertySourcesPropertyResolver) - 在[servletConfigInitParams]中搜索关键'java.naming.factory.initial'
DEBUG 2015-07-16 15:25:33,269(org.springframework.core.env.PropertySourcesPropertyResolver) - 在[servletContextInitParams]中搜索关键'java.naming.factory.initial'
DEBUG 2015-07-16 15:25:33,269(org.springframework.core.env.PropertySourcesPropertyResolver) - 在[jndiProperties]中搜索关键'java.naming.factory.initial'
DEBUG 2015-07-16 15:25:33,269(org.springframework.jndi.JndiTemplate) - 查找名为[java:comp / env / java.naming.factory.initial]的JNDI对象
DEBUG 2015-07-16 15:25:33,269(org.springframework.jndi.JndiLocatorDelegate) - 找不到转换的JNDI名称[java:comp / env / java.naming.factory.initial] - 尝试原始名称[java .naming.factory.initial。 javax.naming.NameNotFoundException:名称[java.naming.factory.initial]未绑定在此Context中。无法找到[java.naming.factory.initial]。
DEBUG 2015-07-16 15:25:33,269(org.springframework.jndi.JndiTemplate) - 查找名为[java.naming.factory.initial]的JNDI对象
DEBUG 2015-07-16 15:25:33,269(org.springframework.jndi.JndiPropertySource) - 名称[java.naming.factory.initial]的JNDI查找使用消息抛出NamingException:Name [java.naming.factory。 initial]不受此Context的约束。无法找到[java.naming.factory.initial] ..返回null。
DEBUG 2015-07-16 15:25:33,269(org.springframework.core.env.PropertySourcesPropertyResolver) - 在[systemProperties]中搜索关键'java.naming.factory.initial'
DEBUG 2015-07-16 15:25:33,269(org.springframework.core.env.PropertySourcesPropertyResolver) - 在[systemProperties]中找到类型为[String]且值为'org的键'java.naming.factory.initial' .apache.naming.java.javaURLContextFactory'
DEBUG 2015-07-16 15:25:33,269(org.springframework.core.env.PropertySourcesPropertyResolver) - 在[environmentProperties]中找到类型为[String]和值'org'的键'java.naming.factory.initial' .apache.naming.java.javaURLContextFactory'
DEBUG 2015-07-16 15:25:33,269(org.springframework.beans.factory.annotation.InjectionMetadata) - 处理bean'jndiConfig'的注入元素:私有java.lang.String com.iggroup.wt的AutowiredFieldElement .majormarketmovement.config.JndiConfig.providerUrl
有什么想法吗?
感谢。