我有一个弹簧应用程序。 Bean在applicationContext.xml中定义。
applicationContext.xml中
<bean name="reportFileA" class="com.xyz.ReportFile">
<property name="resource" value="classpath:documents/report01.rptdesign" />
</bean>
reportFile类
public class ReportFile {
private File file;
public void setResource(Resource resource) throws IOException {
this.file = resource.getFile();
}
public File getFile() {
return file;
}
public String getPath() {
return file.getPath();
}
}
在java类中的用法
@Resource(name = "reportFileA")
@Required
public void setReportFile(ReportFile reportFile) {
this.reportFile = reportFile;
}
这很好用。但现在我想在xml中获取bean声明。我怎么能用注释做这个?
ReportFile类是从另一个自己的Spring Project导入的。
我正在尝试将我的spring应用程序迁移到spring boot。我不想再有xml配置了。
可能解决方案
@Bean(name="reportFileA")
public ReportFile getReportFile() {
ReportFile report = new ReportFile();
try {
report.setResource(null);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return report;
}
为了将资源注入您的bean使用ResourceLoader,请尝试以下代码:
@Configuration
public class MySpringBootConfigFile {
/*..... the rest of config */
@Autowired
private ResourceLoader resourceLoader;
@Bean(name = "reportFileA")
public ReportFile reportFileA() {
ReportFile reportFile = new ReportFile();
Resource ressource = resourceLoader.getResource("classpath:documents/report01.rptdesign");
try {
reportFile.setResource(ressource);
} catch (IOException e) {
e.printStackTrace();
}
return reportFile;
}
/* ...... */
}