注釈のまとめについて


一、java内蔵注記
1,@Targetはこの注釈がどこに用いられるかを示し,可能なElemenetTypeパラメータは:ElemenetType.CONTRUCTORコンストラクタはElemenetTypeを宣言した.FIELDドメイン宣言(enumインスタンスを含む)ElemenetType.LOCAL_VARIABLEローカル変数宣言ElemenetType.METHODメソッドはElemenetTypeを宣言する.PACKAGEパッケージはElementTypeを宣言します.PARAMETERパラメータ宣言ElemenetType.TYPEクラス、インタフェース(注釈タイプを含む)またはenum宣言2、@Retentionは、注釈情報をどのレベルで保存するかを示す.オプションのRetentionPolicyパラメータには、RetentionPolicy.SOURCE注記はコンパイラによってRetentionPolicyを破棄する.CLASS注記はclassファイルで使用可能ですが、VMによってRetentionPolicyが破棄されます.RUNTIME VMは、実行期間中もコメントを保持するため、反射機構によって注釈の情報を読み取ることができる.3,@Documentedこの注記をjavadocに含める4,@Inheritedは子クラスが親クラスの注記を継承することを許可する5,@Deprescatedは現在の要素が使用に賛成しないことを示す.6,@Overrideは現在のメソッドが親を上書きするメソッドであることを示す.7、@SuppressWarningsは、不適切なコンパイラ警告メッセージを閉じることを示します.
 
二、Spring内蔵注記
1,@Autowired注記
byTypeの方法で自動的に組み立てる.クラスのメンバー変数、メンバーメソッド、および構築子に適用できます.デフォルトで@Autowired注記を使用して自動注入を行う場合、Springコンテナで一致する候補Beanの数は1つのみである必要があります.required=falseをオプションに設定できます.複数のタイプの一致するbeanが存在する場合、@Qualifier注記を使用して、アセンブリするbeanを明確に指定できます.
 
2、@Qualifier注記
@Qualifier(「Beanの名前」)注入Beanの名前を指定します.クラスのメンバー変数、メソッドのパラメータ、およびサブを構築するパラメータにのみ使用できます.@Autowiredと併用すると、自動アセンブリのポリシーはbyNameになります.
 
注記の使用例:
public class Person {
	private Long id;
	private String name;
	private Address address;
	
	public Person(){
		
	}
	
	public Person(Long id, String name){
		this.id = id;
		this.name = name;
	}

	@Autowired(required=false)
	public void setAddress(@Qualifier("address2")Address address) {
		this.address = address;
	}
}

 
<!--       bean。              -->
<context:component-scan base-package="com.cjm"/>

<bean id="address1" class="com.cjm.model.Address" p:city="gz1" p:zipCode="111"/>
<bean id="address2" class="com.cjm.model.Address" p:city="gz2" p:zipCode="222"/>

<bean id="person" class="com.cjm.model.Person">
	<constructor-arg index="0" value="111"/>
	<constructor-arg index="1" value="cjm"/>
</bean>
 
カスタム修飾子注記:
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface MyQulifier {
	String value();
}

 
public class Person {
	private Long id;
	private String name;
	private Address address;
	
	public Person(){
		
	}
	
	public Person(Long id, String name){
		this.id = id;
		this.name = name;
	}

	@Autowired
	public void setAddress(@MyQulifier("a2")Address address) {
		this.address = address;
	}
}

 
<bean id="address1" class="com.cjm.model.Address" p:city="gz1" p:zipCode="111">
	<qualifier type="com.cjm.annotation.MyQulifier" value="a1"/>
</bean>

<bean id="address2" class="com.cjm.model.Address" p:city="gz2" p:zipCode="222">
	<qualifier type="com.cjm.annotation.MyQulifier" value="a2"/>
</bean>
 
3、@Component注記
@Component("Beanの名前")は、クラスが管理されているBeanであることを注記します.既定では@Componentで定義されたBeanはsingletonであり、他のスコープのBeanを使用する必要がある場合は@Scopeコメントでターゲットを達成できます.
 
4、@Scope注記
@Scope("Beanの役割範囲")は、@Scopeによって指定された役割ドメインに注記されます.BeanBeanの役割範囲はsingleton、prototypeなどです.
 
5、@Controller注記
 
6、@Service注記
 
7、@Repository注記
 
三、JSR-250仕様の注記(common-annotations.jarパッケージのサポートが必要)
1、@Resource注記
@Resource(name="person")nameプロパティは、注入されたBeanの名前を指定するために使用されます.
@Resource(type=Person.class)typeプロパティは、注入されたBeanのタイプを指定します.
 
2、@PostContsuct注記
Beanのinit-methodプロパティと同様に、管理されているBeanの初期化方法を指定します.
 
3、@PreDestory注記
Beanのdestory-methodプロパティと同様の役割を果たす、管理されたBeanのプロファイル方法を指定します.
 
四、AspectJ内蔵注記