Spring @Value用于连接指向JSON文件的Resource实例

时间:2017-03-08 00:40:33

标签: java spring

我发现很少有使用此功能的示例,并试图让它工作但无法:

package com.acme.service;

public class SampleServiceTest {

   @Value("classpath:data.json")
   private Resource jsonData;

   @Test
   public void testThis() {
      String json = String.join("\n", Files.readLines(jsonData.getFile(), Charset.defaultCharset()));
   }
}

我的文件结构(遵循Maven标准)如下:

data-microservice (top folder)
   -src/test/java/com/acme/service/SampleServiceTest
   -src/test/resources/data.json

我已经尝试了其中几种,但似乎无法发挥作用:

  1. 类路径:data.json
  2. 类路径:/data.json
  3. 类路径:SRC /测试/资源/ data.json
  4. 类路径:/src/test/resources/data.json
  5. 希望得到有关此方面的帮助,如果您还可以提供正确路径的背景信息(即为什么正确的路径有效)。

1 个答案:

答案 0 :(得分:0)

找到它,我很傻并且在没有任何Spring上下文的情况下运行测试。这是在测试类中加入这些注释的问题:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public SampleServiceTest {
   //body here
}

" classpath:data.json" 有效!

虽然如果有人能解释为什么类路径在没有指定目录(src / test / resources)的情况下工作,那真的会有所帮助。