我以为我设置了一个 spring bean,以便当我的 web 应用程序上下文被初始化时 start 方法运行,但它没有运行。当我在调试模式下启动我的应用程序时,我从未在 start 方法中遇到断点。这是我设置课程的方式:
@Transactional
@Service
public class ServerStartup implements Lifecycle {
@Autowired
private EmpireService es;
/**
* sets up the server the first time. Should only be called once
*/
private boolean setup() {
[... sets stuff up, saves the empire]
}
/**
* initializes the Empire with its necessary value
*/
@Override
public void start() {
Empire empire = es.getEmpire();
if (empire == null) {
//initialize all data as there is no "empire"
this.setup();
empire = es.getEmpire();
}
Empire.setEmpireGold(empire.getInstanceEmpireGold());
}
/**
* does nothing
*/
@Override
public void stop() {
}
/**
* does nothing
*/
@Override
public boolean isRunning() {
return false;
}
}
我需要这样做的原因是,当我的程序启动时,它需要检查是否已经构建了地图。如果没有,则需要构建一个。此外,它本质上是在设置一个缓存值,即帝国的 EmpireGold。
如果有比实施 Lifecycle 更好、更有效的方法来做到这一点,我愿意接受建议。否则我只是想让这个工作!