gpt4 book ai didi

java - Spring - 将 bean 定义从 XML 更改为注释

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:48:01 25 4
gpt4 key购买 nike

我有一个可以工作的 spring 应用程序。 Bean 在 applicationContext.xml 中定义。

applicationContext.xml

<bean name="reportFileA" class="com.xyz.ReportFile">
<property name="resource" value="classpath:documents/report01.rptdesign" />
</bean>

报告文件类

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 项目中导入的。

我正在尝试将我的 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;
}

最佳答案

为了将资源注入(inject)您的 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;
}

/* ...... */
}

关于java - Spring - 将 bean 定义从 XML 更改为注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49051241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com