Springアノテーション構成の実装プロセスの詳細な説明

構成アノテーションのサポート:

春4以降、アノテーションフォームを使用する場合は、aopパッケージを導入する必要があります

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-aop</artifactId>
	<version>5.2.8.RELEASE</version>
</dependency>

コンテキスト制約をインポートし、注釈サポートを追加します。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context.xsd">
  
  <context:annotation-config/>
</beans>

指定されたパッケージの下の注釈をスキャンするように構成します

<!--指定注解扫描包-->
<context:component-scan base-package="com.lf.pojo"/>

一般的な注釈の説明

自動アセンブリ注釈

  • @Autowired:自動アセンブリ。その役割は、Javaコードのgetter / setterメソッドとBeanのproperty属性を削除することです。ゲッタープログラムの必要性を排除しますか?私有財産を外部に提供する必要がある場合、それらは保持されるべきです
  • @Autowiredはタイプごとに自動的に転送され、IDマッチングをサポートしていません
  • spring-aopパッケージをインポートする必要があります
  • @Autowiredが属性を一意に自動配線できない場合は、@ Resource(value = "xxx")を渡す必要があります。
  • @Qualifier:コンテナ内に一致するBeanが複数ある場合、Beanの名前は@Qualifierアノテーションを使用して修飾できます。
  • @Autowiredは、タイプbyTypeに従って自動的にアセンブルされます。@ Qualifierが追加されている場合は、byNameメソッドに従って自動的にアセンブルできます。
  • @Qualifierは単独では使用できません
  • @Resource:名前とタイプによる自動アセンブリ。@Autowiredアノテーションと非常によく似ています
  • @Autowiredと@Resourceの類似点と相違点の要約:
  • @Autowiredと@Resourceの両方を使用してBeanをアセンブルできます。フィールドに書き込むことも、セッターメソッドに書き込むこともできます
  • @Autowiredは、デフォルトでタイプごとにアセンブルされます(スプリング仕様に属します)。デフォルトでは、依存オブジェクトが存在する必要があります。null値を許可する場合は、次のように必要な属性をfalseに設定できます。* @Autowired( required = false)、必要に応じて、名前アセンブリを使用して@Qualifierアノテーションと組み合わせることができます
  • @Resourceはデフォルトで名前でアセンブルされ、名前はname属性で指定できます。name属性が指定されていない場合、アノテーションがフィールドにあると、デフォルトでフィールド名で名前で検索されます。アノテーションがsetterメソッドで記述されている場合、属性名はデフォルトでアセンブリに使用されます。名前に一致するBeanが見つからない場合は、タイプに応じてアセンブリが実行されます。ただし、name属性を指定すると、名前に従ってのみアセンブルされることに注意してください。
    これらは同じ機能を持ち、アノテーションによってオブジェクトに挿入されますが、実行順序が異なります。@Autowired first byType、@ Resource first byName

Beanの実装

@Component:その役割はBeanインジェクションを実現することです。@ Componentアノテーションはクラスの先頭に配置できますが、@ Componentを使用することはお勧めしません。Springは
より詳細なアノテーションフォームを提供します:@ Repository、@ Service @ Controller 、それらは対応しますそれぞれ、ストレージ層Bean、ビジネス層Bean、およびプレゼンテーション層Beanです。したがって、@ Componentの代わりにそれらを使用することをお勧めします

プロパティの
挿入アノテーションを使用してプロパティを挿入します

setメソッドを指定せずに、@ value( "value")を直接名に直接追加できます

@Component("user")
// 相当于配置文件中
public class User {
@Value("Java")
// 相当于配置文件中 
public String name;
}

setメソッドが提供されている場合は、@ value( "value")をsetメソッドに追加します

@Component("user") 
public class User {
  public String name;
  @Value("Java")  
  public void setName(String name) {    
    this.name = name;  
  } 
}

最新の2020年に収集されたいくつかの高頻度のインタビューの質問(すべてドキュメントにまとめられています)には、mysql、netty、spring、thread、spring cloud、jvm、ソースコード、アルゴリズム、その他の詳細な説明など、多くの乾物があります。詳細な学習計画、インタビュー質問の並べ替えなど。これらのコンテンツを取得する必要がある場合は、次のようなQを追加してください:11604713672

おすすめ

転載: blog.csdn.net/weixin_51495453/article/details/113400433