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

问题描述 投票:3回答:1

我有一个弹簧应用程序。 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;
}
java spring spring-boot
1个回答
1
投票

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

    /* ...... */
}
© www.soinside.com 2019 - 2024. All rights reserved.