创建 FileInputStream 的 bean
Creating bean of FileInputStream
我需要在 JAVA 的同一个 excel 工作簿中写 3 个不同的 sheet。我需要将这个任务分成 3 个不同的 classes,每个 class 应该在同一个文件中写一个 excel sheet。现在每次 class 结束时,我都需要将数据刷新到那个特定的 sheet。比如,
inputStream =new FileInputStream("FileName.xls");
wb_template = new XSSFWorkbook(inputStream);
inputStream.close();
wb = new SXSSFWorkbook(wb_template);
//Logic here
FileOutputStream out = new FileOutputStream("FileName.xls");
workbook.write(out);
wb.dispose();
out.close();
并在另一个 class 中为另一个 sheet 重复这个打开和关闭的公共部分。
现在,由于我的 class 被注释了 @Component
注释,我根本无法在我的 classes 中创建 FileOutputStream
with new 作为上面的示例代码。
所以我需要为他们创建 bean。所以现在我的疑问是,我需要为每种类型创建多少个 bean。即 FileInputStream
、SXSSFWorkbook
和 FileOutputStream
?因为我需要在每个 class 结束时处理工作簿并且需要在每个 class 结束时关闭 FileOutputStream
,单个 bean 就足够了吗???
我是这个领域的新手。任何线索将不胜感激。
我认为输入和输出流不是 Spring bean 的理想选择。
你的 excel sheet 作者是更好更直观的候选人:
interface ExcelSheetWriter {
void writeOneSheet(String excelFileName);
}
@Configuration
class Config {
@Bean(name="sheet1Writer) ExcelWriter getSheet1Writer() {
return new Sheet1Writer(); //implements ExcelWriter
}
}
class ExcelDocumentWriter {
@Autowired @Qualifier("sheet1Writer") ExcelWriter sheet1Writer;
@Autowired @Qualifier("sheet2Writer") ExcelWriter sheet2Writer;
@Autowired @Qualifier("sheet3Writer") ExcelWriter sheet3Writer;
//... use them to write the entire document
}
很好 spring bean 在初始化后不会改变状态。
我需要在 JAVA 的同一个 excel 工作簿中写 3 个不同的 sheet。我需要将这个任务分成 3 个不同的 classes,每个 class 应该在同一个文件中写一个 excel sheet。现在每次 class 结束时,我都需要将数据刷新到那个特定的 sheet。比如,
inputStream =new FileInputStream("FileName.xls");
wb_template = new XSSFWorkbook(inputStream);
inputStream.close();
wb = new SXSSFWorkbook(wb_template);
//Logic here
FileOutputStream out = new FileOutputStream("FileName.xls");
workbook.write(out);
wb.dispose();
out.close();
并在另一个 class 中为另一个 sheet 重复这个打开和关闭的公共部分。
现在,由于我的 class 被注释了 @Component
注释,我根本无法在我的 classes 中创建 FileOutputStream
with new 作为上面的示例代码。
所以我需要为他们创建 bean。所以现在我的疑问是,我需要为每种类型创建多少个 bean。即 FileInputStream
、SXSSFWorkbook
和 FileOutputStream
?因为我需要在每个 class 结束时处理工作簿并且需要在每个 class 结束时关闭 FileOutputStream
,单个 bean 就足够了吗???
我是这个领域的新手。任何线索将不胜感激。
我认为输入和输出流不是 Spring bean 的理想选择。
你的 excel sheet 作者是更好更直观的候选人:
interface ExcelSheetWriter {
void writeOneSheet(String excelFileName);
}
@Configuration
class Config {
@Bean(name="sheet1Writer) ExcelWriter getSheet1Writer() {
return new Sheet1Writer(); //implements ExcelWriter
}
}
class ExcelDocumentWriter {
@Autowired @Qualifier("sheet1Writer") ExcelWriter sheet1Writer;
@Autowired @Qualifier("sheet2Writer") ExcelWriter sheet2Writer;
@Autowired @Qualifier("sheet3Writer") ExcelWriter sheet3Writer;
//... use them to write the entire document
}
很好 spring bean 在初始化后不会改变状态。