スプリングブート インターセプターはプロパティ インジェクションを実行できません

問題の説明


ここに画像の説明を挿入
ここに画像の説明を挿入
今日、インターセプターを使用しているときに、属性にインターセプターを挿入すると null になるという奇妙なエラーが発生しました。詳細は次のとおりです。実行中のコードでnull ポインター例外が発生します。つまり、挿入され
ここに画像の説明を挿入
たGson は null です。この問題は非常に奇妙です。明らかに次のようになります。インターセプタは Spring 管理に引き渡されますが、インジェクションが失敗するのはなぜですか?

問題の原因

この問題は、Bean オブジェクトの作成が間違っていることが原因で、インターセプタを設定する際に次のように記述します。

ここに画像の説明を挿入
new キーワードを使用してインターセプターを作成しました。その結果、オブジェクトは spring によって作成されず、もちろん、@Component が使用された場合でも、オブジェクトは spring によって管理されません。

問題が解決しました

解決策 1

newを使わずにインターセプターを作成し、以下の形式に変更します
ここに画像の説明を挿入
Springで管理されているシングルトンオブジェクトを使用し、newオブジェクトを所有しなくなりました

解決策 2

コンストラクターによる属性の割り当て

ここに画像の説明を挿入
ここに画像の説明を挿入

新規作成時に使用する必要があるオブジェクトを渡します

要約する

Spring開発を使用する場合、Springコンテナのスコープに注意する必要があります。暇なときにSpringのソースコードにアクセスしてください。

おすすめ

転載: blog.csdn.net/m0_51545690/article/details/131780191