Spring の基本 -- よく使用されるいくつかのインジェクション アノテーション

@成分

  • 機能: リソースを Spring で管理させます。XML で Bean を設定するのと同じです。
  • 属性: 値: 指定された Bean の ID。value 属性を指定しない場合、デフォルトの Bean ID は現在のクラスのクラス名になります。最初の文字を小文字にします。
    @Component("account")
    アカウントは Bean クラスの ID です

コンポーネントから派生した 3 つのアノテーション

@Controller、@Service、@Repository の3 つのアノテーション
はすべて 1 つのアノテーションの派生アノテーションであり、その機能と属性はまったく同じです。それらは、より明示的なセマンティクスを提供するだけです。

  • @Controller: 通常、プレゼンテーション層の注釈に使用されます。
  • @Service: 通常、ビジネス層の注釈に使用されます。
  • @Repository: 通常、永続化レイヤーのアノテーションに使用されます。詳細: アノテーションに割り当てる属性が 1 つだけで、名前が value の場合、値は割り当てに書き込まれない可能性があります。

@Autowired

  • 機能:種類に応じて自動注入します。アノテーションを使用してプロパティを挿入する場合、set メソッドを省略できます。
    他の Bean タイプのみを注入できます。複数の型が一致する場合は、インジェクションするオブジェクト変数名をBean IDとして使用し、Springコンテナ内を検索し、見つかった場合はインジェクションが成功します。見つからない場合は、エラーを報告してください。
@Autowired
IAccountDao accountDao1;

IOC コンテナは Map 構造で、キーは指定された値、値はそのクラス名と継承クラスです。IOC
コンテナ内で IAccountDao のクラス名または継承クラスを検索し、その 1 つだけが直接挿入されます。 。
複数ある場合、キーはカスタム変数名 accountDao1 に従って IOC コンテナ内で検索され、等しい注入がある場合はエラーが報告されます。

ここに画像の説明を挿入

@修飾子

@Qualifierはクラスインジェクション(@Autowired)をベースに名前(キー)で注入しますが、
クラスメンバ変数を注入する場合は@Autowiredと併用する必要があります。メンバーメソッドを注入するときに単独で使用できます。
このようにして、Spring コンテナ内で ID が ("accountDao2") として指定されている Bean タイプを検索します。

@Autowired
@Qualifier("accountDao2")

@リソース

@Autowired と @Qualifier のアノテーションを組み合わせる

  • 機能: Bean の ID に従って直接インジェクトします。他の Bean タイプのみを注入することもできます。
  • 属性: name: Bean の ID を指定します。
@Resource("accountDao2")
相等于一下两个注解
@Autowired
@Qualifier("accountDao2")

@価値

  • 機能: 基本データ型と文字列型データの挿入
  • 属性: value: 値の指定に使用されます。

@範囲

  • 役割: Bean のスコープを指定します。
  • 属性: value: 指定された範囲の値。
    値: シングルトン プロトタイプ
    シングルトン: シングルトン オブジェクト
    プロトタイプ: 複数のインスタンス オブジェクト
@Scope("protype")

@構成

構成

  • 役割: 現在のクラスが構成クラスであることを指定します。
  • 詳細: AnnotationConfigApplicationContext オブジェクトによって作成されるパラメータとして構成クラスが使用されている場合、このアノテーションは記述できません。

@ComponentScan

  • 役割: アノテーションを通じてコン​​テナーを作成するときに、Spring によってスキャンされるパッケージを指定するために使用されます。
  • 属性:
    値:basePackages と同じ機能を持ち、どちらもコンテナ作成時にスキャンするパッケージを指定するために使用されます。
  • このアノテーションを使用することは、xml で構成することと同じです:
    <context:component-scan base-package="com.iheima"></context:component-scan>
@ComponentScan("com.itheima")

@豆

機能: 現在のメソッドの戻り値を Bean オブジェクトとして Spring IOC コンテナに格納するために使用されます。

  • 属性:
  • name: Bean を指定するために使用される ID。書かれていない場合、デフォルトは現在のメソッドの名前です。
  • 詳細:
  • アノテーションを使用してメソッドを構成する場合、メソッドにパラメータがある場合、Spring フレームワークはコンテナにアクセスして、使用可能な Bean オブジェクトがあるかどうかを確認します。
  • 検索方法はAutowiredアノテーションと同じです

@輸入

構成ファイルをセットアップするときに、構成クラスを 1 つだけ持つことは不可能です。一般的な構造は、メイン構成クラスであり、他のサブ構成クラスがインポートされます。@ComponentScan を使用してパッケージを 1 つずつインポートすると、次のようになります。
@Import を使用して直接インポートできます

  • 役割: 他の構成クラスをインポートするために使用されます
  • 属性:
  • value: 追加の構成クラスを指定するために使用されるバイトコード。
  • Import アノテーションを使用する場合、Import アノテーションを持つクラスが親構成クラスとなり、すべてのインポートはサブ構成クラスになります。
@Import("jdbcConfig.class")

@PropertySource

  • 役割: プロパティ ファイルの場所を指定するために使用されます
    。 属性:
  • 値: ファイルの名前とパスを指定します。
  • キーワード: クラスパス、クラスパスの下の意味
@PropertySource("classpath:jdbcConfig.properties")

Junit テストで使用されるアノテーション

テスト内のすべてのテストメソッドでオブジェクトを取得するためにコンテナを取得する必要があるのは面倒すぎますが、Junit 自体は Spring を使用しているかどうかを知りません。Spring コンテナの作成に役立つと言われていますが、Junit は置き換えるアノテーションを提供してくれました。コンテナ自体 コンテナ自体が実行されます

@ランウィズ

純正ランナーを交換します

@RunWith(SpringJUnit4ClassRunner.class)

@ContexConfiguration

@ContextConfiguration アノテーション:

  • location 属性: 構成ファイルの場所を指定するために使用されます。クラスパス内にある場合は、classpath: を使用して指定する必要があります。
  • クラス属性: アノテーションを指定するために使用されるクラス。XML 構成が使用されない場合、この属性を使用してアノテーション クラスの場所を指定する必要があります。
@ContextConfiguration(classes = SpringConfig.class)

注: ここで必要な Junit のバージョンは 4.12 以降である必要があります

おすすめ

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