ホームページ  >  記事  >  Java  >  SpringBoot @Componet アノテーション注入の失敗を解決する方法

SpringBoot @Componet アノテーション注入の失敗を解決する方法

PHPz
PHPz転載
2023-05-14 11:55:062405ブラウズ

    @コンポーネント アノテーションの挿入に失敗しました

    問題の説明

    Springboot プログラムの記述では、@Component アノテーションが person に明確に追加されています。コンテナは、Person クラスの Bean オブジェクトが見つからないことを示しています。

    従来の解決策をインターネットでいろいろ検索しましたが、どれもうまくいきませんでした。後で、パッケージのスキャンの問題ではないかと気づきました。当時のメインプログラムは、次のフォルダに置かれていました。デフォルトのパッケージ スキャン ルールに従って、メイン プログラムと同じ名前 - メイン プログラムが配置されているパッケージ内のクラスとそのすべてのサブパッケージをスキャンします。その場合、ドメイン パッケージの下にある person クラスは当然スキャンされません。 @Component がマークされていても、有効になりません。

    SpringBoot @Componet注解注入失败如何解决

    解決策

    メイン プログラムにコンポーネント アノテーションを追加します

    @ComponentScan("com.example")

    サンプルにあるすべてのパッケージを springboot で正常にスキャンできるようにすると、すべてが実行されます。問題解決

    SpringBoot @componentの役割

    落とし穴を踏んでしまったインターフェースがありますこのインターフェースの実装クラスには @Autowired アノテーションを付ける必要があります使用しました。不注意でクラスを実装しませんでした。@Component アノテーションを追加すると、Spring がクラスが見つからないというエラーを報告します。

    Spring に関するアノテーションがクラスに表示されたら、たとえば、実装クラスの @Autowired アノテーションとアノテーションが付けられたもの クラスは Spring コンテナから取り出され、呼び出される実装クラスも Spring コンテナで管理する必要があることに加え、 @Component

    @Component("conversionImpl")
    //其实默认的spring中的Bean id 为 conversionImpl(首字母小写)
    public class ConversionImpl implements Conversion {
        @Autowired
        private RedisClient redisClient;
    }

    Introduction

    開発中にこのアノテーションが発生することは避けられません@ Component

    @Controller コントローラー (インジェクション サービス)

    は、制御層をマークするために使用されます。 struts のアクション層に相当

    #@ サービス サービス (dao への注入)

    はサービス層をマークするために使用され、主にビジネス ロジックの処理に使用されます

    @リポジトリ (dao アクセスの実装)

    は、データ アクセス層をマークするために使用されます。または、データ アクセス コンポーネントをマークするために使用されるとも言えます。

    @Component (通常の pojo を Spring コンテナーにインスタンス化します。構成ファイルに相当します)

    一般的には、さまざまなコンポーネントを指します。つまり、クラスがさまざまな分類に属している場合 (@Controller、@Services などに属していない場合)、@Component を使用してこのクラスにアノテーションを付けることができます。

    これは Spring mvc の applicationcontent.xml などの設定ファイル内の記述形式です。

    Format:

    <bean id="" class=""/>

    Spring Boot では、ゼロ構成が使用されるため、クラスに @component アノテーションを直接追加するだけです。

    以下に書くのは、コンポーネント スキャン コンポーネントを導入することです。

    <context:component-scan base-package=”com.mmnc.*”>

    上記example は、Component コンポーネントを導入する例です。base-package は、スキャンする必要があるすべてのサブパッケージを表します。

    共通点:

    @controller、@service、@repository、@component のアノテーションが付けられたクラスはすべて、管理用の Spring コンテナに含まれます

    以上がSpringBoot @Componet アノテーション注入の失敗を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。