【发布时间】:2020-03-12 01:12:09
【问题描述】:
您好,我阅读了这段代码:
@Configuration
@Singleton
public class myConfig {
private static final org.apache.logging.log4j.Logger LOGGER = LogManager.getLogger(myConfig.class);
public OfflineAttributesComputer offlineAttributesComputer;
@PostConstruct
public void init() {
offlineAttributesComputer = getOfflineAttributesComputer();
}
public OfflineAttributesComputer getOfflineAttributesComputer(){
OfflineAttributesComputer computer = new OfflineAttributesComputer();
LOGGER.info("Successfully initialized offline computer.");
return computer;
}
@Scheduled(fixedRate = 600000)
public void updateOfflineAttributesComputer(){
try {
offlineAttributesComputer = getOfflineAttributesComputer();
LOGGER.info("Successfully updated offline computer.");
} catch (Exception e) {
throw new EventBrokerException("Failed.", e);
}
}
}
基本功能就像初始化一个单例对象,初始化后,给offlineAttributesComputer赋值。然后每十分钟更新一次变量。
有些地方我不明白:
@Singleton 有必要吗?如果我们删除它会发生什么?
在类中定义了public OfflineAttributesComputerofflineAttributesComputer? 我们应该使用 public static OfflineAttributesComputer offlineAttributesComputer 吗?
为什么我们需要@PostConstruct,我们可以正常初始化并安排更新吗?
【问题讨论】:
标签: java spring spring-boot oop design-patterns