2016-04-26 10 views
1

私はSpringフレームワークで注釈を見ました。そして、私はどのように注釈をつけることができるのだろうか。Springでアノテーションを作成する方法は?

多くの注釈(@Controller、@Autowired、@RequestMappingなど)を使用しています。そのような注釈を使用して、私たちはリフレクションでコード化しません。しかし、私は反射なしで注釈を作成するためのチュートリアルを見つけることができません。すべてのチュートリアルでは、作家は注釈を反映しています。

私がリフレクションを使用しない場合、注釈を付けることはできませんか?

+1

質問は何を行うアノテーションですか? (あなたの質問はX/Yの問題かもしれません) –

+0

@RC。あなたのご感謝ありがとうございます。私が春の注釈を使うとき、私はリフレクションを使う必要はありません。しかし、顧客の注釈を使用する場合、私はリフレクションを使用する必要があります。違いはなんですか? –

+2

@blank_popup注釈はSpringの開発者によって作成されたものであるため、注釈を処理するコードも作成しています(リフレクションまたはバイトコード製織による)。例えば、 '@ Transactional'アノテーションは' org.springframework.transaction.interceptor.TransactionInterceptor'によって処理されます。 – Kayaman

答えて

2

もちろん、に反映させることなくアノテーションを作成することができます。 あなたは何かのためにそれを使用することはできません。アノテーション自体にはロジックはありません。アノテーションを表示して何らかのアクションを実行するコードに依存するマーカーです。この種のコードを公開するのが最も簡単な方法です。

+0

アノテーションにロジックを持たせることができます。 –

+0

@PeterRaderそれを詳しく教えてください。注釈が存在するかどうかを確認するために他のコードでリフレクションを使用することなく、何かを行うカスタム作成の注釈を表示します。 – Kayaman

+0

申し訳ありませんコード、私は電車で便利なを使用して答えます。あなたは列挙型をサブクラス化し、デフォルト値として使用される値のコンストラクタを作成できます。コンストラクタで 'System.out.println(" me exists ")と書いてください。 –

0

JDK5以降のアノテーションを記述することができます。しかし、リフレクション(xand静的スコープ)だけがアノテーションを読むことができます!

アノテーションはxdocletタグの代わりに使用されていましたが、Javadocの一部であったため、「ドキュメントを書くことができますか?

書き込めるだけで読み込めないメモリについては、WOM(write-only-memory)というジョークがあります。

の場合、Reflectionを使用したくない場合は、サードパーティのライブラリでリフレクションでアノテーションを読むことができます。

あなたの注釈に注釈を付けることができます。

例:今、あなたはあなたが使用することができ、あなたが見

@MyOptional 
private MyService service; 

にコードを変更することができます

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD) 
@Autowired(required=false) 
public @interface MyOptional { 
} 

@Autowired(required=false) 
private MyService service; 

は、このようなカスタム注釈によって短縮することができますリフレクションコードなしのカスタム注釈。

+0

あなたの心配ありがとうございました。私はあなたのために多くのことを見つけました! –

関連する問題