Webアプリケーションコンテキストが初期化されたときにstartメソッドが実行されるように、Spring Beanを設定したと思いましたが、実行されていません。アプリケーションをデバッグモードで起動すると、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;
}
}
これを行う必要がある理由は、プログラムの起動時に、マップが作成されているかどうかを確認する必要があるためです。そうでない場合は、ビルドする必要があります。また、基本的には、キャッシュされた値であるEmpireのempireGoldを設定しています。
ライフサイクルを実装するよりも、これを行うためのより良い、より効率的な方法があれば、私は提案を受け入れるでしょう。そうでなければ、私はこれを機能させたいだけです!