我不了解此错误或解决此错误的任何步骤。建议采取的措施对我来说意义不大。我看到这样的问题问了很多,但我仍然不了解潜在的问题。
我得到的错误是:
Description:
Parameter 0 of constructor in com.yrc.mcc.core.batch.listener.ChunkSizeListener required a bean of type 'java.io.File' that could not be found.**
Action:
Consider defining a bean of type 'java.io.File' in your configuration.
我班的内容:
@Component
public class ChunkSizeListener extends StepListenerSupport<Object, Object> {
private FileWriter fileWriter;
public ChunkSizeListener(File file) throws IOException {
fileWriter = new FileWriter(file, true);
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
try {
fileWriter.close();
} catch (IOException e) {
System.err.println("Unable to close writer");
}
return super.afterStep(stepExecution);
}
@Override
public void beforeChunk(ChunkContext context) {
try {
fileWriter.write("your custom header");
fileWriter.flush();
} catch (IOException e) {
System.err.println("Unable to write header to file");
}
}
}
答案 0 :(得分:1)
很明显!
从Spring 4.3开始,如果有一个类,它被配置为Spring bean,只有一个构造函数,Autowired注释可以是 省略,Spring将使用该构造函数并注入所有必要的 依赖性
因此,在您的情况下,spring希望将Type File的bean(不是您的情况)作为bean,因此,您可以做的就是更新代码,向类中添加默认构造函数,如下所示:
@Component
public class ChunkSizeListener extends StepListenerSupport<Object, Object> {
private FileWriter fileWriter;
public ChunkSizeListener() {
// not sure if you should keep the super() or not
super();
}
public ChunkSizeListener(File file) throws IOException {
fileWriter = new FileWriter(file, true);
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
try {
fileWriter.close();
} catch (IOException e) {
System.err.println("Unable to close writer");
}
return super.afterStep(stepExecution);
}
@Override
public void beforeChunk(ChunkContext context) {
try {
fileWriter.write("your custom header");
fileWriter.flush();
} catch (IOException e) {
System.err.println("Unable to write header to file");
}
}
}
答案 1 :(得分:0)
您有一个Spring bean(因为它有一个Axis.set_tick_params
批注),它带有一个以dotnet ef migrations add SomeMigration --startup-project ../path/to/Api/project
作为参数的构造函数。
当Spring要创建该bean的实例时,它将寻找另一个必需类型的Spring bean(在这种情况下为@Component
)来调用构造函数。
由于您的应用程序上下文中没有所需类型的Spring Bean,因此会出现此错误消息。
如错误消息所暗示的那样,在Spring应用程序上下文中添加File
对象,这很可能不是适合您的情况的正确解决方案。
例如,您可以将构造函数更改为此:
File
然后您将需要一个Spring属性源,该源定义了“ filename”属性。
如果您的应用程序是Spring Boot应用程序,则只需在File
中插入一行:
public ChunkSizeListener(@Value("${filename}") String filename) throws IOException {
fileWriter = new FileWriter(new File(filename), true);
}