Spring Read Classpath Resource using @Value

In this Java Spring Framework tutorial, we learn how to use @Value annotation to read classpath resource files located in the resources folder in your Spring application project.

For example, we have a text file located at /src/main/resources/data.json in the Spring application project.

Next step, we implement a new class named ResourceService and implement a method to read the data.json file and return it as a String object. In this service class we use @Value annotation to load the data.json file to the Resource object.

ResourceService.java

import java.io.IOException;
import java.io.InputStream;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.FileCopyUtils;

@Service
public class ResourceService {
	
	@Value("classpath:data.json")
	private Resource dataResource;
	
	public String readDataResourceAsString() throws IOException {
		InputStream inputStream = dataResource.getInputStream();
		byte[] fileData = FileCopyUtils.copyToByteArray(inputStream);
		String outputString = new String(fileData);
		return outputString;
	}

}

How to use ResourceService class

Firstly, declare the resourceService object.

@Autowired
private ResourceService resourceService;

And return data.json file from classpath as a String object.

String data = resourceService.readDataResourceAsString();

Happy Coding 😊