ホームページ > Java > &#&チュートリアル > springBoot で @Value を使用する場合の問題を解決する方法

springBoot で @Value を使用する場合の問題を解決する方法

王林
リリース: 2023-05-14 18:55:06
転載
1459 人が閲覧しました

@Value を使用して値を取得することで生じる問題

springBoot プロジェクトでは、通常、管理を容易にするために構成ファイルにパスまたはリソースを書き込みます。

ただし、入手時に問題が発生する可能性があります。

file.uploadFolder=E://upload/

1. 通常はフィールドを定義します

use @Value("$ {name}" ) 値

@Value("${file.uploadFolder}")
    private String uploadFolder;
ログイン後にコピー

2 を取得できます。ただし、通常はツール クラスで使用します

ただし、フィールドは static によって変更され、静的変数になります。値を取得できない場合は、このメソッドを使用します。取得した場合、取得したものは null です。

そこで、値の取得方法を変更する必要があります。値は次のように取得できます。 set メソッドでは static を使用しないように注意してください。 ! !

private static String uploadFolder;
public static String getUploadFolder() {
        return uploadFolder;
    }
    @Value("${file.uploadFolder}")
    public  void setUploadFolder(String uploadFolder) {
        Base64Utils.uploadFolder = uploadFolder;
    }
ログイン後にコピー

3. Spring で管理できるように、ツール クラスに @Component またはその他のアノテーション

を追加することをお勧めします。

springBoot が @Value を使用したときに発生したウーロンを覚えておいてください

最初にコードを見てください

server.port=8007
#mysql配置
url=jdbc:mysql://localhost:3306/lzy_zyg?useUnicode=true&characterEncoding=UTF-8
username=root
password=root
ログイン後にコピー

これは、application.properties に入力された関連する設定情報です。構成は外部構成情報として使用されます。

次に、必要に応じて次のように使用します。

@Configuration
public class JfinalDb
{
    @Value("${url}")
    private String dbUrl;
    @Value("${username}")
    private String dbUName;
    @Value("${password}")
    private String dbPwd;
...
}
ログイン後にコピー

これを使用すると、非常に奇妙な問題が発生します。つまり、名前付け設定のユーザー名とパスワードは正しく、ローカル接続も正しいです。 , しかし常に 接続認証に失敗し、ユーザー名がrootではないというエラーです。

最後に dbUName を出力したところ、 は root ではなく、私のホスト名であることがわかりました。

したがって、ここでは、application.properties ファイル内の名前 username をカスタマイズしないように注意してください。期待する結果が得られないためです。

以上がspringBoot で @Value を使用する場合の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート