import org.springframework.beans.factory.annotation.Value;
public class PropertyReader {
@Value("${spring.active.profiles")
private String profile;
@Nonnull
public String getProfile() {
return profile;
}
}
这是我的测试
public class PropertyReaderTest {
@Test
public void testGetProfile() throws Exception {
System.out.printf(System.getProperty("spring.active.profiles"));
assertEquals("development", new PropertyReader().getProfile());
}
}
我的依赖是
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.3.RELEASE</version>
</dependency>
</dependencies>
我看到了
development
java.lang.AssertionError:
Expected :development
Actual :null
答案 0 :(得分:0)
Yuo应该在类PropertyReader上放置@Service,或者你应该使用XML spring文件来定义bean并让它弹出来定义属性
答案 1 :(得分:0)
首先我假设你的语法是正确的,并且你发布的@value的类型错误。
@Value("${spring.active.profiles}")
现在要使用@value,必须将类注册为spring bean,并且仅使用注释。即使你使用xml注册类,你的@value也行不通。
并且使用弹簧容器进行bean自动注入,不要使用new创建对象。
解决上述问题
1)
@Component
PropertyReader
使用@Component将类PropertyReader作为spring bean。
2)从测试类中的应用程序上下文加载bean,不要使用new来创建它。