First of all, let's start with beans definition file. We need basically to declare file dependency we would like to inject:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <context:annotation-config /> <context:component-scan base-package="org.example" /> <bean id="source" class="org.springframework.core.io.ClassPathResource"> <constructor-arg index="0" value="some.file.txt" /> </bean> </beans>
Having configuration part is ready, we can inject file to a bean.
package org.example; import java.util.List; import javax.annotation.Resource; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.InputStreamSource; import org.springframework.stereotype.Component; @Component public class SomeBean implements InitializingBean { @Autowired @Resource( name = "source" ) private InputStreamSource source; public SomeBean () { } @Override public void afterPropertiesSet() throws Exception { for( final String line: ( List< String > )IOUtils.readLines( source.getInputStream() ) ) { // do something here } } }That's it :)
Pretty easy and powerful technique.