java - Java - 如何以编程方式生成新的托管bean

107 2

假设我有一个托管bean Info


@Component


public class Info {


 private final String activeProfile;


 private final Instant timestamp;



 public Info(@Value("${spring.profiles.active}") String activeProfile) {


 this.activeProfile = activeProfile;


 this.timestamp = Instant.now();


 }


}



这里的关键是bean需要Spring注入的东西(在我的例子中为活动配置文件),以及每次创建bean时都会更改的东西(在我的例子中为时间戳),获得这种bean的新实例的正确方法是什么?

类似


@RestController


public class InfoRestController { 


 @GetMapping


 public Info getInfo(@Value("${spring.profiles.active}") String activeProfile) {


 return new Info(activeProfile);


 } 


}



我已经考虑了一些潜在的解决方案:

  • 对控制器中的InfoFactoryfactoryBean有一个引用,然后是return factory.getObject(); ,但是我真的需要为这样一个简单的案例创建一个新的类吗?
  • 拥有构建托管bean的@Bean工厂方法,这仍然存在一个问题,该方法显式地实例化了Info POJO,因此它本身需要对它进行spring注入,

时间: 原作者:

89 3

当请求到来时需要一个托管的新对象。为了实现这一点,你可以用@Scope("prototype")标记你的Bean来解决你的问题。

原作者:
...