如何在Spring Boot中访问src/main/resources /文件夹中的资源文件

tyr*_*yro 5 java jaxb spring-boot

我正在尝试访问src/main/resources/XYZ/view文件夹中的xsd,其中我创建了XYZ/view文件夹,文件夹中有我需要的abc.xsd进行xml验证.

当我每次将结果作为null时尝试访问xsd时,

我试过了,

1)

@Value(value = "classpath:XYZ/view/abc.xsd")
private static Resource dataStructureXSD;
InputStream is = dataStructureXSD.getInputStream();
Source schemaSource = new StreamSource(is);
Schema schema = factory.newSchema(schemaSource);
Run Code Online (Sandbox Code Playgroud)

2)

Resource resource = new ClassPathResource("abc.xsd");
File file = resource.getFile();
Run Code Online (Sandbox Code Playgroud)

还有很多我为获取资源或类加载器等而创建的路径.

最后我得到了xsd,

File file = new File(new ClassPathResource("/ src/main/resources/XYZ/view/abc.xsd").getPath()); Schema schema = factory.newSchema(file);

它正在发挥作用,我想知道为什么其他两条路会出错或为什么它对我不起作用而对别人好.:(

还是有其他好方法可以做到这一点,我很遗憾

Kev*_*ers 14

@Value注释用于注入属性值到变量,通常是字符串或简单的原始值.你可以在这里找到更多信息.

如果要加载资源文件,请使用ResourceLoader如下:

@Autowired
private ResourceLoader resourceLoader;

...

final Resource fileResource = resourceLoader.getResource("classpath:XYZ/view/abc.xsd");
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下命令访问资源:

fileResource.getInputStream() 要么 fileResource.getFile()

  • `fileResource.getFile()`是否适用于spring boot jar中的文件? (6认同)