構成アノテーションのサポート:
春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;
}
}