使用getBean()动态创建Beans的正确方法

时间:2015-03-19 10:09:21

标签: spring javabeans

设置:   - 有一个包含我的bean的Bean定义的几个配置类   - 我将从一个数据库中获取一个String列表,该数据库包含我想动态实例化的所有bean名称及其相应的Configuration类

目前我将在列表上执行循环,然后调用传递beanName的方法和包含bean定义的Configuration Class:

private Object getBean(String beanName, Class configurationClass) {
    Object bean = null;
    AbstractApplicationContext context = new AnnotationConfigApplicationContext(
            configurationClass);
    bean = context.getBean(beanName);
    return bean;
}

然后我将使用返回的对象并使用Reflections根据我从数据库中获取的列表调用特定的方法。

问题:有没有正确的方法来做到这一点?因为对于我想要创建的每一个bean,我认为性能会受到影响。

1 个答案:

答案 0 :(得分:0)

您可以在4.1版本中使用它

我在这篇文章中找到了以下示例 - Spring MVC: How to return image in @ResponseBody?

public ResponseEntity<InputStreamResource> downloadUserAvatarImage(@PathVariable Long userId) {
GridFSDBFile gridFsFile = fileService.findUserAccountAvatarById(userId);

return ResponseEntity.ok()
        .contentLength(gridFsFile.getLength())
        .contentType(MediaType.parseMediaType(gridFsFile.getContentType()))
        .body(new InputStreamResource(gridFsFile.getInputStream()));

}