Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SpringBoot将缓冲读取器注入到以文件读取器作为参数的类中?_Java_Spring_Spring Boot_Dependency Injection_Spring Web - Fatal编程技术网

Java 如何使用SpringBoot将缓冲读取器注入到以文件读取器作为参数的类中?

Java 如何使用SpringBoot将缓冲读取器注入到以文件读取器作为参数的类中?,java,spring,spring-boot,dependency-injection,spring-web,Java,Spring,Spring Boot,Dependency Injection,Spring Web,我有一个spring boot应用程序,在其中我有一个方法的下面一行 BufferedReader reader = new BufferedReader(new FileReader("somePath")); BufferedReader reader = new BufferedReader(new FileReader("somePath")); 如何将其注入到代码中,以便在单元测试中模拟它?使用guice,我可以使用提供者。但是如何使用spring boot实现这一点呢?如果您想模

我有一个spring boot应用程序,在其中我有一个方法的下面一行

BufferedReader reader = new BufferedReader(new FileReader("somePath"));
BufferedReader reader = new BufferedReader(new FileReader("somePath"));

如何将其注入到代码中,以便在单元测试中模拟它?使用guice,我可以使用提供者。但是如何使用spring boot实现这一点呢?如果您想模拟在方法中包含以下行的类,请提供任何帮助。

BufferedReader reader = new BufferedReader(new FileReader("somePath"));
BufferedReader reader = new BufferedReader(new FileReader("somePath"));
创建类的模拟实例并定义模拟行为,如:

@MockBean
private TestClass testClass;

when(testClass.readFile()).thenReturn(content);
其中content是要返回的输出

您可以创建缓冲读取器的bean并注入:

    @Bean
BufferedReader reader(@Value("${filename}") String fileName) throws FileNotFoundException{

    return new BufferedReader(new FileReader(fileName));
}

-Dfilename=SOMEPATH

如果要模拟在方法中包含以下行的类

BufferedReader reader = new BufferedReader(new FileReader("somePath"));
BufferedReader reader = new BufferedReader(new FileReader("somePath"));
创建类的模拟实例并定义模拟行为,如:

@MockBean
private TestClass testClass;

when(testClass.readFile()).thenReturn(content);
其中content是要返回的输出

您可以创建缓冲读取器的bean并注入:

    @Bean
BufferedReader reader(@Value("${filename}") String fileName) throws FileNotFoundException{

    return new BufferedReader(new FileReader(fileName));
}

-Dfilename=SOMEPATH

您可以创建如下所示的bean

    @Bean
    public BufferedReader bufferedReader() throws FileNotFoundException {
        return new BufferedReader(new FileReader("somePath"));
    }
现在您可以将其注入到您的类中

    @Inject
    private BufferedReader bufferedReader;
要从属性获取文件名,请在资源目录内创建foo.properties文件,然后执行以下操作:

@Configuration
@PropertySource("classpath:foo.properties")
public class SampleConfig {
    @Value("${fileName}")
    private String fileName;

    @Bean
    public BufferedReader bufferedReader() throws FileNotFoundException {
        return new BufferedReader(new FileReader(fileName));
    }

    @Bean
    public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}
Foo.properties:

fileName=file_name

您可以创建如下所示的bean

    @Bean
    public BufferedReader bufferedReader() throws FileNotFoundException {
        return new BufferedReader(new FileReader("somePath"));
    }
现在您可以将其注入到您的类中

    @Inject
    private BufferedReader bufferedReader;
要从属性获取文件名,请在资源目录内创建foo.properties文件,然后执行以下操作:

@Configuration
@PropertySource("classpath:foo.properties")
public class SampleConfig {
    @Value("${fileName}")
    private String fileName;

    @Bean
    public BufferedReader bufferedReader() throws FileNotFoundException {
        return new BufferedReader(new FileReader(fileName));
    }

    @Bean
    public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}
Foo.properties:

fileName=file_name

我需要逐行读取此文件,因此没有readFile方法。这一行位于另一个方法中,该方法对读取的文件进行一些处理。所以这是不可能的。有没有办法将BufferedReader注入到我正在使用的类中?创建一个BufferedReader@bean BufferedReader reader()bean抛出FileNotFoundException{return new BufferedReader(new FileReader(FILENAME));}并将InjectItFile Name作为命令行参数给出。当前,控制器类实现CommandLineRunner并获取参数。如何将其与这个bean方法相关联?我需要逐行读取这个文件,因此没有readFile方法。这一行位于另一个方法中,该方法对读取的文件进行一些处理。所以这是不可能的。有没有办法将BufferedReader注入到我正在使用的类中?创建一个BufferedReader@bean BufferedReader reader()bean抛出FileNotFoundException{return new BufferedReader(new FileReader(FILENAME));}并将InjectItFile Name作为命令行参数给出。当前,控制器类实现CommandLineRunner并获取参数。如何将其与这个bean方法关联?文件名作为命令行参数给出。当前,控制器类实现CommandLineRunner并获取参数。如何将其与这个bean方法关联?文件名作为命令行参数给出。当前,控制器类实现CommandLineRunner并获取参数。如何将其与这个bean方法关联?