【发布时间】:2018-11-16 21:20:23
【问题描述】:
我在 Spring Boot 应用程序启动期间设置了一个 bean。我正在尝试使用休息端点更新 bean。控制器中的端点调用 updatePoints()。当我使用 GET 点检索数据时,它仍然只有在启动期间实例化的数据。它在 bean 中没有更新的数据。
@Component
public class DynamicEntry{
private Map<String, DynamicPoint> dynamicPoints = new HashMap<>();
private DefaultListableBeanFactory beanFactory;
@Autowired
public DynamicEntry(DefaultListableBeanFactory beanFactory){
this.beanFactory = beanFactory;
}
@PostConstruct
void loadPoints(){
//load the dynamicPoints after the spring boots up
}
void updatePoints(String point){
try {
if (!dynamicPoints.containsKey(point)) {
DynamicPoint dynamicPoint = new DynamicPoint(point);
beanFactory.registerSingleton(point, dynamicPoint);
dynamicPoints(point, dynamicPoint);
}
} catch (Exception | Error e) {
e.printStackTrace();
}
}
@Bean
public Map<String, DynamicPoint> dynamicPoints() {
return dynamicPoints;
}
}
【问题讨论】:
标签: spring spring-boot autowired spring-bean