最初に実行することの 1 つとして TCP サーバーを実行する必要があるアプリケーションに取り組んでいます。これは現在、Spring 構成クラスを介して開始されます。
@PostConstruct
public void initTCPServer() {
// Gets the port number and other values from the database...
// Note: This uses dependency injection of the Data Access Objects (DAOs).
}
既存の事前入力されたデータベースを使用する場合は正常に動作しますが、統合テストを作成しようとすると問題が発生します: データを事前に入力する必要がありますが@PostConstruct
、JUnit@Before
メソッドであり、 SpringJUnit4ClassRunner を使用する場合も同様@TestExecutionListeners
です。
私が今考えることができる唯一の解決策は、テスト構成クラスのデータを で初期化し、@PostConstruct
これが最初にロードされるようにすることですが、これは少し汚いようです。編集: 試してみましたが、これは BeanCurrentlyInCreationException で失敗しました - EntityManagerFactory の依存性注入が完了していないようです。
よりエレガントな方法はありますか (たとえば、Spring によって管理されていない別の場所で TCP サーバーを実行する必要があります)。