我有一个调度器,用于检查DB表中的新数据:
@Service
public class ReloadCache {
@Scheduled(fixedDelay = 1000)
public void reload() {
...... do something
}
}
@Service
public class LogicalClient {
final Map<String, Map<String, String>> map;
@PostConstruct
public void initializeBalances() {
............ map = new HashMap.......
}
@KafkaListener(......")
public void handle(....) {
.......read map here
}
}
请注意,这两个服务位于不同的Java类和包中。
当调度运行并检测到更改时,我如何再次调用用@PostConstruct
注释的Java方法initializeBalances
,以便再次生成映射结构?
在ReloadCache
类中注入LogicalClient
,并像这样调用该函数:
@Service
public class ReloadCache {
private final LogicalClient logicalClient;
public ReloadCache(LogicalClient client) // Injection through constructor.
{
this.logicalClient = client;
}
@Scheduled(fixedDelay = 1000)
public void reload() {
...... do something
client.initializeBalances()
}
}
您的两个类都用@Service
进行了注释。因此,它们都是Spring bean,可以在任何合适的地方注入(只要接收类本身是bean(。