Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法在SpringBoot应用程序中获取已加载属性文件的列表?_Java_Spring Boot_Properties File_Wiremock_Spring Boot 2 - Fatal编程技术网

Java 有没有办法在SpringBoot应用程序中获取已加载属性文件的列表?

Java 有没有办法在SpringBoot应用程序中获取已加载属性文件的列表?,java,spring-boot,properties-file,wiremock,spring-boot-2,Java,Spring Boot,Properties File,Wiremock,Spring Boot 2,当我试图执行mvn clean install时,我只在一个平台上遇到问题。作为构建的一部分,我们编译多个组件,最后使用wiremock执行功能测试。它应该从功能测试配置文件中选择特定的配置,默认属性应该从application.properties文件中选择。但由于某些原因,相同的代码无法找到这些文件中提到的属性。所以,我只是想知道,我是否可以得到wiremock期间加载的属性文件列表?这将提供一些线索,说明为什么没有拾取预期的属性文件 所有属性文件都位于: src/main/resource

当我试图执行
mvn clean install
时,我只在一个平台上遇到问题。作为构建的一部分,我们编译多个组件,最后使用wiremock执行功能测试。它应该从功能测试配置文件中选择特定的配置,默认属性应该从application.properties文件中选择。但由于某些原因,相同的代码无法找到这些文件中提到的属性。所以,我只是想知道,我是否可以得到wiremock期间加载的属性文件列表?这将提供一些线索,说明为什么没有拾取预期的属性文件

所有属性文件都位于:

src/main/resources
然后,从测试类开始

@ContextConfiguration(classes = SampleFTConfiguration.class)
public class SampleControllerTest{
//test method
}

@ComponentScan("com.xxx.xxx.xxx.ft")
@PropertySource("classpath:application-test.properties")
public class  SampleFTConfiguration{


}

注意:我不希望任何人修复这个问题,我只想知道,我们是否可以获得加载的属性文件的名称?

好的,按照测试定义,请确保:

  • 您应该使用SpringRunner(如果您在JUnit5上,则使用SpringExtension)运行测试。因此,您应该放置注释
    @RunWith(SpringRunner.class)
    (或JUnit5的
    @ExtendsWith(SpringExtension.class)

  • 您正在使用的属性源是
    application test.properties
    。您已经说过属性文件位于
    src/main/resources
    中,但文件名可能意味着它应该位于
    src/test/resources


  • 在搜索和尝试了一段时间后,您要查找的似乎是
    ConfigurableEnvironment

    代码非常简单。但是,我认为最好直接调试和检查
    configurableEnvironment
    值,这样您就可以根据需要调整代码(删除过滤器名称等)


    请添加测试的代码,至少是测试中使用的注释,以及
    application.properties
    文件的确切位置。如果没有代码,我们只能推测您可以在日志文件/控制台中获得这些详细信息。在服务器启动时,有关正在加载的配置文件的所有详细信息都记录在日志文件/控制台中。@pratap不,我们在日志/控制台中找不到文件名如果启用调试日志,它应该显示已加载的属性文件。我刚刚创建了示例spring引导应用程序并开始了调试日志记录,下面是我在日志中看到的内容
    2021-03-23 11:53:17.157 DEBUG 16544---[main]o.s.w.c.s.StandardServletEnvironment:添加[applicationConfig:[classpath:/application.properties]]PropertySource,搜索优先级立即低于[应用程序配置属性]
    抱歉,
    应用程序测试。属性
    src/test/resources
    中。但是,即使我在该文件中添加了任何属性。它在应用程序中也不起作用。我不想对代码做任何更改,因为我知道代码没有问题。出于某种原因,这是与平台相关的,在平台中可以更正属性RTIE文件未加载。那么您是否使用SpringRunner/SpringExtension?如果没有它,整个spring基础架构将无法启动
      @Autowired
      private ConfigurableEnvironment configurableEnvironment;
    
      @Test
      public void getProperties() {
        Map<String, Object> mapOfProperties = configurableEnvironment.getPropertySources()
            .stream()
            .filter(propertySource -> propertySource.getName()
                .contains("application-test.properties"))
            .collect(Collectors.toMap(PropertySource::getName, PropertySource::getSource));
        mapOfProperties.values()
            .forEach(System.out::println);
      }
    
    properties-one=value-for-properties-one
    properties-two=value-for-properties-two