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

时间:2018-03-01 13:56:19

标签: java spring spring-boot

我有一个有效的弹簧应用程序。 Bean在applicationContext.xml中定义。

的applicationContext.xml

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

reportFile class

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;
}

1 个答案:

答案 0 :(得分: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;
    }      

    /* ...... */
}