How to access a resource file in src/main/resources/ folder in Spring Boot
java, jaxb, spring-boot
Solution
The `@Value` annotation is used to inject property values into variables, usually Strings or simple primitive values. You can find more info here.
If you want to load a resource file, use a `ResourceLoader` like:
@Autowired
private ResourceLoader resourceLoader;
...
final Resource fileResource = resourceLoader.getResource("classpath:XYZ/view/abc.xsd");
Then you can access the resource with:
`fileResource.getInputStream()` or `fileResource.getFile()`
Problem
I'm trying to access xsd in src/main/resources/XYZ/view folder where XYZ/view folder are created by me and folder has abc.xsd which I need for xml validation. When I try to access the xsd every time I get the result as null, I have tried as, 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); ``` 2) ``` Resource resource = new ClassPathResource("abc.xsd"); File file = resource.getFile(); ``` and many more trails I made to get the resource or classloader etc. Finally I get the xsd with, File file = new File(new ClassPathResource("/src/main/resources/XYZ/view/abc.xsd").getPath()); Schema schema = factory.newSchema(file); and it is working, I want to know why the other two trails would have gone wrong or why it didn't work for me and fine for others. :( Or is there other good way of doing it which I'm missing