SpringMVC の基本 -- @Autowired を使用してコントローラーに Bean オブジェクトを注入する 実装クラスを注入する代わりにインターフェイスを注入する理由

コントローラー層では、 @Autowired を使用して TestService インターフェイスを挿入します。
ここに画像の説明を挿入
注入するのは、サービス
ここに画像の説明を挿入
層実装クラスの代わりに、次のようにサービス層インターフェイスです。
ここに画像の説明を挿入

なぜ?

AOPの原理はダイナミックプロキシであり、使用できるプロキシには実装クラスをベースとしたJDKベースのダイナミックプロキシと、実装クラスをベースとしたCglibベースのダイナミックプロキシの2種類があります。サブクラスについて。JAVA動的プロキシ

JDK ベースの動的プロキシを使用しています。コントローラーに TestService の代わりに TestServiceImpl を挿入すると、トランザクション AOP が使用できなくなります。つまり、トランザクション制御がありません。なぜですか? Spring が AOP とトランザクション コントロールで構成されていることがわかっているため、トランザクション コントロールは Spring によって完全に管理できます。以下は
、構成されたエントリ ポイント式
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_44660367/article/details/110261431