SpringBoot のマッパーのアノテーション

    ideaで実装クラスを書く際、dao層の処理を呼び出すためにマッパークラスを参照するのですが、@Autowiredアノテーションを使用すると赤線で表示されてBeanが見つかりません。

    解決策: @mapper または @repository アノテーションをマッパーの dao レイヤーに追加します。

    これら 2 つのアノテーションの違いは次のとおりです。

    1. @mapper を使用した後は、Spring 設定でスキャン アドレスを設定する必要がなく、関連するマッパー クラスに対応する Mapper.xml の名前空間属性を通じて Spring が動的に Bean を生成し、ServiceImpl に注入します。

    2. @repository は Spring でスキャン パッケージ アドレスを設定し、dao レイヤー Bean を生成して、それを ServiceImpl に注入する必要があります。

Spring がアノテーションをスキャンするとき、抽象クラスとインターフェイスのスキャンがキャンセルされるため、@reponsitory アノテーションを付けた dao インターフェイスを見つけることができません。アイデアで @Mapper アノテーションを使用すると、@Autowired の使用時に Bean が見つからないというプロンプトがアイデアから表示されますが、操作には影響しません。しかし、見ていて不快な気持ちになりました。Baidu には、設定を警告に変更するなど、多くの回避方法がありました。その後、2 つのアノテーションを同時に使用できる素晴らしい操作を見つけました。このようにして、@Mapper は次のことを行うことができます@reponsitory がお手伝いします。強迫性障害を治療します。

Mapper はスキャンにのみ使用されます。もちろん、これを削除して Springboot スタートアップ クラスの @MapperScan(basePackages = {"com.xxx.xxx"}) でスキャンすることもできます。

@Mappler は mybatis アノテーションです。Mybatis は実行時にマッパー ファイルを見つけて、実行時に関数を完了するプロキシ クラスを構築できる必要があります。Spring とは何の関係もありません。@MapperScan を使用してマッパー インターフェイスをスキャンし、mybatis がこれらのインターフェイスを見つけられるようにする必要があります。次に、Spring の @ComponetScan もこれらのインターフェイスをスキャンして、Spring が mybatis によって生成されたこれらのプロキシ クラスを管理できるようにします。@Repository は Spring アノテーションであり、インターフェイス上に配置しても役に立たず、意味がありません。

Springboot は簡素化された Spring フレームワークであり、開発者がボイラープレート構成を使用する必要がないように、Spring アプリケーションの構築と開発プロセスを簡素化するために、多くのフレームワークの使用方法とパラメーターをデフォルトで構成します。

おすすめ

転載: blog.csdn.net/qq_52915133/article/details/119215701