4

私は現在、Webアプリケーションを開発しています。私はSpringの基本をいくつか知っていますが、あまり取り組んでいないので、Springスキルを向上させることにしました。そして、本当に良い解決策を見つけることができないという問題に直面しました。

ユーザーが構成ファイル(Spring Beanなど)に触れることなくすべてを構成できる機能をアプリに実装したいと思います。基本的に、アプリのデプロイ、起動、使用を希望するユーザーは、.WARファイルのみをコピーする必要があります。たとえばtomcatに追加し、すべての構成はアプリ内で行う必要があります(たとえば、OpenFireのように)。

したがって、ユーザーがアプリをデプロイして特定のURLに移動し、すべてがUIを介して行われると想像します。すべての詳細が指定されると、いくつかのパラメーター(DB接続の詳細など)について尋ねられます。すべてがcfgファイルに保存され、アプリが再起動され、構成が行われます。プロセスは終了しました。

Spring Beanですべての構成の詳細を取得したかったのですが、プログラムで実際に変更できないことがわかりました(1つの解決策は、「Springから」ファイルを変更し、後でアプリコンテキストをリロードすることです-それは良いアプローチ?)。もう1つは、たとえばxmlファイルをWEB-INFに保存し、ユーザーから収集したデータをそこに保存することですが、非Beanファイルからアプリケーションコンテキストにデータをロードする方法はありますか?

どんなアドバイスもあります!

4

2 に答える 2

2

このような値はプロパティファイルに保存できます。SpringBeanでプロパティファイルの値を使用できます。
また、UIを介して受け入れられたユーザー入力を使用して、プロパティファイルの値を更新できます。

于 2012-07-05T08:33:29.537 に答える
0

ApplicationContextクラスとそのサブクラスを介してBeanにアクセスできます。ここから、すべてのBeanのプロパティのゲッターとセッターを呼び出すことができます。ただし、アプリケーションコンテキストはすでに作成されていることに注意してください。また、も同様ですBeanFactory。そのため、見逃したライフサイクルステップがいくつかあります。

自分のBeanでライフサイクルに関係のないプロパティを設定することは確かに可能ですが、コンテキストを設定して開始した後で、「インフラストラクチャ」Beanのプロパティ(トランザクション管理、パッケージスキャンなど)を変更することはお勧めしません。 。

ターゲットユーザーがナイーブユーザーの場合は、プロパティファイルを修正する機能を提供してから、プログラムでWebアプリケーションをリロードし、PropertyPlaceholderConfigurerまたはを使用してSpringコンテキストにそのプロパティをロードさせることができますPropertyOverrideConfigurer

ターゲットユーザーが「内部」ITに精通したユーザーである場合は、JMXを使用することもできます。これにより、jconsoleまたは同様のコンテキストですべてのBeanのプロパティを変更できます。

于 2012-07-05T08:41:26.957 に答える