Spring是否有一个注释来将类路径内容读取到String?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring是否有一个注释来将类路径内容读取到String?相关的知识,希望对你有一定的参考价值。

我想将类路径中的文件内容(在resources/中)读取到String。 Spring有一个方便的注释吗?

就像是:

public class MyClass {
    @Resource("classpath:data.txt")
    private String data;
}

春天有类似的东西吗?

答案
@Value("classpath:data.txt")
private Resource data;

你不能注入String,但你可以使用一个名为Resource的Spring抽象来获取文件并自己阅读它的内容。

我认为Spring将责任归咎于你,否则它会非常脆弱;在访问/读取资源期间可能会发生不同的IO事情,导致IOException

此外,文件到字符串的转换并不常见,以使Spring实现它。

另一答案

@Value annotation用于将属性值注入变量,通常是字符串或简单的原始值。你可以找到更多信息here

如果要加载资源文件,请使用ResourceLoader,如:

@SpringBootApplication
public class ExampleApplication implements CommandLineRunner {

    @Autowired
    private ResourceLoader resourceLoader;

    @Autowired
    private CountWords countWords;

    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Count words : " + countWords.getWordsCount(resourceLoader.getResource("classpath:file.txt")));

    }
}

另一种解决方案,你可以像@Value一样使用:

@SpringBootApplication
public class ExampleApplication implements CommandLineRunner {


    @Value("classpath:file.txt")
    private Resource res;

    @Autowired
    private CountWords countWords;

    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Count words : " + countWords.getWordsCount(res));

    }
}

以上是关于Spring是否有一个注释来将类路径内容读取到String?的主要内容,如果未能解决你的问题,请参考以下文章

CPP 将类写入/读取到二进制文件中

Spring @Import注解源码解析

java题 任选一个文件,使用文件输入流,将其数据读取出来,并打印到控制台!! 代码简单能够有注释

SSM-避坑记

为什么需要括号来将元组赋值给带注释的变量?

Spring Boot 配置文件图标不是小绿叶?无法读取到配置文件内容?