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.


