[解決済み] Springは@Autowiredアノテーションを付けずにコンストラクタに依存性を注入する
2023-02-07 19:08:54
質問
私はこの公式のSpringの例を使って実験しています。
チュートリアル
の例を試していて、このコードに依存しているところがあります。
https://github.com/spring-guides/gs-async-method/tree/master/complete
のコードを見てみると
AppRunner.java
クラスのコードを見ると、2つの疑問があります。
-
サーバ起動時に、このクラスのコンストラクタにブレークポイントを置くと、コンストラクタ内で
GitHubLookupService
が spring から提供されているようで、それを使って@Service
ビーンが設定されていました。しかし、そこには@Autowired
アノテーションがなかったので、一体どうやってこのコンストラクタが正しい依存関係で呼び出されるのでしょうか? 本来はnull
.
の自動的な前提なのでしょうか?
Spring Boot
?
Springは、"privateフィールド+コンストラクタ引数を見て、適切なBeanを探すべきと仮定しているのでしょうか?
それは
Springフレームワーク
それとも
スプリングブート
?
何か見落としているのでしょうか?
-
私の記憶では、以下のものを提供することが推奨されていました。
デフォルトコンストラクタ
をビーンやサービスなどに提供することが必須でした。どうしてこのクラス (
AppRunner
) にはデフォルトのコンストラクタがないのでしょうか? Spring はどのようにして引数付きのコンストラクタを実行すべきかを知っているのでしょうか? それはそれが唯一のコンストラクタだからですか?
どのように解決するのですか?
Springで始める
4.3
のように、Spring Beanとして構成されたクラスが1つのコンストラクタのみを持つ場合、そのクラスは
@Autowired
アノテーションを省略することができ、Springはそのコンストラクタを使用し、必要な依存関係をすべて注入します。
については
デフォルトコンストラクタ
: デフォルトのコンストラクタ、あるいは
@Autowired
アノテーションを持つコンストラクタか、あるいは
@Autowired
アノテーションの有無にかかわらず
を読む
@Autowired
の章を読んでください。
関連
-
[解決済み] Spring Frameworkの@Injectと@Autowiredの違いは何ですか?どのような条件でどちらを使うか?
-
[解決済み] Spring の @Autowired フィールドが NULL になっているのはなぜですか?
-
[解決済み】Spring @Autowire プロパティとコンストラクタの違いについて
-
[解決済み] 同じインタフェースを実装する2つのビーンを自動配線する - 自動配線するデフォルトのビーンを設定する方法は?
-
[解決済み] クラスを@Componentでアノテートした場合、Spring BeanとSingletonということになるのでしょうか?
-
[解決済み] Spring Dataです。"delete by "はサポートされていますか?
-
[解決済み] Maven依存性 spring-webとspring-webmvcの比較
-
[解決済み] Spring: 静的フィールドに値を注入するには?
-
[解決済み] Spring Securityをセッションなしで使用するにはどうすればよいですか?
-
[解決済み] Spring Bootアプリケーションの環境指定application.propertiesファイル [終了しました]。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Spring Hibernate - 現在のスレッドでトランザクションに同期したセッションを取得できませんでした。
-
[解決済み] 複数のBeanが見つかった場合、Springはどのように名前による自動配線を行うのですか?
-
[解決済み] java:comp/env/は何をするところですか?
-
[解決済み] Spring @PostConstruct と init-method 属性の比較
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] Spring Dataです。"delete by "はサポートされていますか?
-
[解決済み] Spring BeanPostProcessorは具体的にどのように動作するのですか?
-
[解決済み] Spring BootとMongoDBへの接続設定方法
-
[解決済み] なぜ春になると静電場が自動化されないのか?
-
[解決済み] Spring Securityをセッションなしで使用するにはどうすればよいですか?