Spring 读取 属性 文件但值为空
Spring reads property file but values are null
我不太明白这里的问题。我正在尝试在我的 Spring 应用程序中使用属性文件。该文件似乎已被读取,但如果我尝试读取值,我会得到空值。
这是我的(部分)背景 xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aws-context="http://www.springframework.org/schema/cloud/aws/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/cloud/aws/context
http://www.springframework.org/schema/cloud/spring-cloud-aws-context.xsd">
<tx:annotation-driven />
<context:component-scan base-package="my.package" />
<context:annotation-config />
<context:property-placeholder location="classpath:test.properties" />
<!-- OTHER STUFF HERE -->
</beans>
我的 test.properties 在 src/main/resources
下
当我尝试 运行 时,它是这样的:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:META-INF/spring/context-test.xml")
public class SimpleTest {
@Autowired
private ApplicationContext context;
@Autowired
private Environment environment;
@Test
public void test() throws Exception {
System.out.println(environment);
System.out.println(environment.getProperty("my.test"));
}
}
输出将是:
StandardEnvironment {activeProfiles=[], defaultProfiles=[default], propertySources=[systemProperties,systemEnvironment]}
null
所以我想我应该在 "propertySources" 中看到除了系统属性之外的东西,对吗?
此外,如果我将 xml 行更改为:
<context:property-placeholder location="classpath:test.properties2" />
我收到 FileNotFound 异常,这意味着文件本身已加载?那么为什么我不能从中加载属性?
在test.properties我只有这个:
my.test=123456
这可能是什么问题?
属性-placeholder 不会自动向环境公开属性。你应该像这样注入你的属性:
@Value("${my.test}")
private String myTest;
我不太明白这里的问题。我正在尝试在我的 Spring 应用程序中使用属性文件。该文件似乎已被读取,但如果我尝试读取值,我会得到空值。
这是我的(部分)背景 xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aws-context="http://www.springframework.org/schema/cloud/aws/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/cloud/aws/context
http://www.springframework.org/schema/cloud/spring-cloud-aws-context.xsd">
<tx:annotation-driven />
<context:component-scan base-package="my.package" />
<context:annotation-config />
<context:property-placeholder location="classpath:test.properties" />
<!-- OTHER STUFF HERE -->
</beans>
我的 test.properties 在 src/main/resources
下当我尝试 运行 时,它是这样的:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:META-INF/spring/context-test.xml")
public class SimpleTest {
@Autowired
private ApplicationContext context;
@Autowired
private Environment environment;
@Test
public void test() throws Exception {
System.out.println(environment);
System.out.println(environment.getProperty("my.test"));
}
}
输出将是:
StandardEnvironment {activeProfiles=[], defaultProfiles=[default], propertySources=[systemProperties,systemEnvironment]}
null
所以我想我应该在 "propertySources" 中看到除了系统属性之外的东西,对吗?
此外,如果我将 xml 行更改为:
<context:property-placeholder location="classpath:test.properties2" />
我收到 FileNotFound 异常,这意味着文件本身已加载?那么为什么我不能从中加载属性?
在test.properties我只有这个:
my.test=123456
这可能是什么问题?
属性-placeholder 不会自动向环境公开属性。你应该像这样注入你的属性:
@Value("${my.test}")
private String myTest;