2017-09-25 4 views
1

Webフォームを使用してappliaction.propertiesを更新できるため、ユーザーはファイルにアクセスして編集する必要がありません。私は、application.propertiesファイルから値をロードし、Webフォームのテキストフィールドに表示したいと考えています。ユーザーがいくつかの変更を編集した後、ユーザーはapplication.propertiesファイルを更新できます。Spring - Webフォームをapplication.propertiesファイルにバインドする

質問 - Springで@valueを使用する以外に、Webフォームをapplication.propertiesファイルにバインドするにはどうすればよいですか。キーと値のペアはWebフォームを通じて更新される可能性があるので、@valueは正しい選択ではないと思います。

+0

、あなたがプロパティファイルをロードした後/ DTOをマップするために、あなたの更新されたプロパティを格納することができ、必要な場合は、そこからそれを読むことができます。プロパティファイルを使用してフォームをバインドするときは、マップ/ dtoおよびプロパティを更新していることを確認する必要があります。アプリケーションの起動時にのみ、@Valueを使用することができます。コンテキストがロードされた後は、それは役に立ちません。 – asg

+0

こんにちは、あなたが提案したアイデアに興味があります。万が一あなたが関係することができる資料や例がありますか?前もって感謝します! –

+0

これを確認してください。https://stackoverflow.com/questions/42179664/inject-all-keys-and-values-from-property-file-as-map-in-spring – asg

答えて

2

アプリケーションプロパティは、起動時にアプリケーションがロードする必要のある設定用のもので、たとえば、環境変数を使用することもできますが、そのファイルで指定されたユーザー名とパスワードを使用してデータベースに接続します。

実際にこのファイルを実行時に編集する必要はありませんが、ScopeのRefreshアノテーションを使用する点を除きます。しかし、実行時に構成を変更することをサポートするアプリケーションを実現することは、実際にはかなり難しいので、そうすることはお勧めしません。

実行時にプロパティをリロードするためのSpring Cloud構成サーバーがあり、REST APIを提供しますが、主にgitを使用します。

しかし、ここでの重要な点は、開発者が行うことだけの設定であることです。また、あなたの状態を保存するためにファイルシステムを使用したいとは思っていません。むしろデータベースを持っています。データベース上でファイルシステムを使用する理由はたくさんありますが、私はそれらにはまだ触れません。

私はあなたの担当者を見ている初心者の仮定を行います。私があなたに与えることができる最高のアドバイスは、他の人たちが何をしているのかを見て、それから最初に学ぶことです。ほとんどの場合、人々はすべて似たようなことをしています。これは正しいことです。あなたの春のアプリケーションでフォームの提出に基づいてプロパティファイルを変更する誰かを見つけることができない場合は、おそらくデータベースと一緒に行きたいデータベースを使用してください。

+0

こんにちは、お返事ありがとうございます。しかし、私のWebフォームで設定を更新した後で、Webアプリケーションを再起動しようとするとどうなりますか? Spring Cloud Configを使用する以外の解決策はありますか? –

+0

Springクラウド設定を使用している場合、アプリケーションを起動する必要はありません。プロパティは自動的に更新されます。 – asg

0

私たちは似たような状況では、クライアントが実行時に設定ファイルに更新する必要が先月でした。 私たちは、あなただけのこのコンポーネントを注入し、そのゲッターとセッター

@Autowired 
ConfigurationManagerComponent configComponent; 
String myActualUserName=configComponent.getUserName(); 
を使用し、プロパティを取得または保存する必要が任意の時間に、そして、@value

@Component 
public class ConfigurationManagerComponent{ 
    @Value("conf.username") 
    private String userName; 
    @Value("conf.email"); 
    private String email; 
    /* 
    * All your attributes 
    */ 
    //getters and setters 
    public String getUserName(){ 
    return this.userName; 
    } 
    public void setUserName(String userName){ 
    // first set the value to this class (component) 
    this.userName=userName; 
    //second save this value in the properties file 
    //a specific method you have to implement 
    saveproperties("conf.username",userName); 
    } 
    /* 
    * Do like this for all your getters and setters 
    */ 
} 

を使用してファイルからのすべてのプロパティをロードする中央Springコンポーネントを作成

これでコントローラのすべてのデータをconfigコンポーネントから取得し、Springモデルに設定してWebページにフォームを入力することができます。また、編集後に保存すると、常に設定コンポーネントのセッタ(更新クラスとプロパティファイル)。

この方法は標準ではなく、私たちが問題を解決するために使用したソリューションであり、すぐに良い結果が得られます。 また、ApacheコモンズのコンフィグレーションHereに他の解決策をチェックすることもできます。 これが役立つことを願っています。あなたのアプリケーションのために

+0

こんにちは、新しい設定をapplication.propertiesに追加する必要がある場合はどうすればよいですか? –

+0

こんにちは、単にこの新しいプロパティをコンポーネントに追加し、ゲッターとセッターを追加します。 – oussamaLachiheb

+0

こんにちは、申し訳ありません。私は私の質問を言い換えるべきだと思う。私が求めている質問は、Webフォームを通じてapplication.propertiesに新しい設定を追加する必要がある場合です。例えば。 「追加」ボタンをクリックすると、新しい設定を入力するためのフィールドが作成されます。 –

関連する問題