3

Spring、Spring Security、Tomcat、および MySQL を使用して Java Web アプリケーションを開発しています。現在、私はまだ、データベースをかなり頻繁に変更し、データベースを再作成してテスト データを削除している段階にあります。最終的に、これは問題にはなりませんが、Web アプリケーションをブートストラップするためにインスタンス化された Bean または実行されるコードを持つ方法はありますか? IoC 機能を利用して、たとえば、PasswordEncoderアプリケーションが元のユーザー アカウントを設定するために使用するものと同じものを使用できるようにしたいと考えています。さらに、データベースが存在しない場合などに、このスクリプトでデータベースを作成したいと考えています。これを行う方法はありますか? 私が提案しているよりも良い方法はありますか?私は今説明したアルゴリズムと結婚しているわけではありませんが、それは私が考えていることを伝えるための最良の方法です.

前もって感謝します!

4

3 に答える 3

3

データベース スキーマを作成する良い方法は、liquibaseです。データを挿入することもできます。Liquibase は bean: を介して Spring 統合を提供するliquibase.spring.SpringLiquibaseため、必要に応じてデータベースが更新されます。

于 2010-09-20T21:02:40.637 に答える
3

Spring を使用している場合は、ContextLoaderListener を登録して、ApplicationContext を自動的に開始できます。ApplicationContext は、理想的にはJPAまたはHibernateを介してデータベースを初期化できますが、プレーンな jdbc を使用することもできます

于 2010-09-20T21:03:57.567 に答える
1

インターフェイスを使用してBeanを実装できApplicationListenerます。

あなたが受け取ったときにあなたに必要な行動を実行しますContextRefreshedEvent

このアプローチの利点は、フレームワークがコンテキストとすべてのBeanをロードするため、ブートストラップを実行するためにそれらすべてにアクセスできることです。

欠点は、このイベントが初期化と更新時にトリガーされることです

ContextRefreshedEventApplicationContext が初期化または更新されたときに公開されます。ここで初期化されるとは、すべてのBeanがロードされ、シングルトンが事前にインスタンス化され、ApplicationContextを使用できるようになることを意味します。

于 2010-09-20T23:06:12.080 に答える