Spring org.springframework.core.env.Environment或@Value-giving null

Spring org.springframework.core.env.Environment或@Value-giving null,spring,spring-mvc,properties,Spring,Spring Mvc,Properties,我正试图通过自动化项目中的org.springframework.core.env.Environment加载属性。但我得到的环境是空的。以下是我的配置 pom中的依赖项: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.2

我正试图通过自动化项目中的
org.springframework.core.env.Environment
加载属性。但我得到的环境是空的。以下是我的配置

pom中的依赖项:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
属性配置类-TestProperty.java

@Configuration
@PropertySource("classpath:details.properties")
public class TestProperty{
    
    @Autowired
    Environment env;

    @Test
    public void testPro(){
      System.out.println(env.getProperty("group"));
    }
}
在执行这个JUnit测试之后,由于环境的原因,我得到了空指针。我是否丢失了任何配置或做错了什么


我试着在应用程序上下文的帮助下阅读:属性占位符和@Value。值也返回null。有人能帮忙吗?谢谢。

您混合了
src
测试
环境。不要使用
@Test
尝试使用
@PostConstruct

@Configuration
@PropertySource("classpath:details.properties")
public class TestProperty{
    
    @Autowired
    Environment env;

    @PostConstruct
    public void testPro(){
      System.out.println(env.getProperty("group"));
    }
}
对于该类的单元测试:

@SpringBootTest
@TestPropertySource("classpath:details.properties")
public class TestPropertyTest {
    @Autowired
    Environment env;

    @Test
    void unitTest() {
      // test stuff
    }
}

我猜问题在于目录结构。测试文件夹中的
@配置
不会被java文件夹中的
@组件扫描
拾取。如果是这种情况,解决方案将是将TestProperty移动到Java文件夹,并在测试类上方使用
@ContextConfiguration(classes=TestProperty.class)
来获取它
TestProperty.java
仅在src/main/java目录中,您可以向我展示您的类吗
public static void main
?这不是一个测试,所以它根本不起作用。同时,停止混合来自不同版本Spring的罐子,这些罐子在不久的将来会咬到你,导致奇怪的问题。@M.Deinum Yes。我将所有版本修改为4.3.2.RELEASE,目前已编辑。我怎样才能工作呢?我是否缺少任何其他配置?
@SpringBootTest
@TestPropertySource("classpath:details.properties")
public class TestPropertyTest {
    @Autowired
    Environment env;

    @Test
    void unitTest() {
      // test stuff
    }
}