Java 如何使用SpringBoot将缓冲读取器注入到以文件读取器作为参数的类中?
我有一个spring boot应用程序,在其中我有一个方法的下面一行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实现这一点呢?如果您想模
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方法关联?