Spring Read Classpath Resource using ApplicationContext

In this Java Spring Framework tutorial, we learn how to read classpath resources in a Spring application using ApplicationContext class.

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 two methods to read the data.json file as a Resource object and as a String object. In order to get the ApplicationContext object we implement the ApplicationContextAware interface and override setApplicationContext() method.

ResourceService.java

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

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.FileCopyUtils;

@Service
public class ResourceService implements ApplicationContextAware {

	private ApplicationContext applicationContext;
	
	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		this.applicationContext = applicationContext; 
	}

	public Resource readDataResource() {
		Resource resource = applicationContext.getResource("classpath:data.json");
		return resource;
	}
	
	public String readDataResourceAsString() throws IOException {
		Resource resource = applicationContext.getResource("classpath:data.json");
		InputStream inputStream = resource.getInputStream();
		byte[] fileData = FileCopyUtils.copyToByteArray(inputStream);
		String outputString = new String(fileData);
		return outputString;
	}
}

How to use the ResourceService class

Firstly, declare the resourceService object.

@Autowired
private ResourceService resourceService;

How to read file in resources folder and return Resource object.

Resource resource = resourceService.readDataResource();

How to read the text file in classpath and return as a String object.

String data = resourceService.readDataResourceAsString();

Happy Coding 😊