spring expression read file content

2019-02-05 11:05发布

问题:

How to use spring expression to read file content and put it into a string?

I would like to do the following.

For example,

@Value("classpath:myquery.sql")
File f;

@Value("#{org.apache.commons.io.FileUtils.readFileToString(f)}")
String sql;

Or even better

@Value("#{FileUtils.readFileToString(classpath:myquery.sql)}")
String sql;

However, none of above code work.

Just to mention I am using spring version 3.2.0

Thanks.

回答1:

Finally got the answer myself...

@Value("#{T(org.apache.commons.io.FileUtils).readFileToString(" +
    "T(org.springframework.util.ResourceUtils).getFile('classpath:myquery.sql')" +
    ")}")
String sql;

sql is now default filled by the exact content of myquery.sql under classpath



回答2:

There is a similar question answered here which use Java configuration.

@Configuration
public class Spring {

    @Value("classpath:choice-test.html")
    private Resource sampleHtml;

    @Bean
    public String sampleHtmlData() {
        try(InputStream is = sampleHtml.getInputStream()) {
            return IOUtils.toString(is);
        }
    }
}