Springでjavax.annotations.Resourceコメントの使い方

990 ワード

実は@ResourceはSpringの注釈ではなく、彼のカバンはjavax.annotations.Resourceを導入する必要があります。しかしSpringは、この注釈も同時にサポートされている。
 
@ResourceデフォルトはbyNameによって自動的に注入され、J 2 EEから提供されます。
@Resourceには2つの重要な属性があります。nameとtype、Springは@Resourceに注釈されたname属性をbeanの名前に解析し、type属性はbeanのタイプに解析します。したがって、name属性を使用すると、byNameの自動注入ポリシーを使用し、type属性を使用する場合はbyType自動注入ポリシーを使用します。nameもtype属性も指定されていない場合は、反射機構によりbyName自動注入術を使用します。
 
@Resource組立手順 
 (1)nameとtypeを同時に指定した場合、Springコンテキストから唯一一致するbeanを見つけて組み立てて、見つけられないなら異常を投げます。
 (2)nameが指定されている場合は、コンテキストから名前(id)にマッチするbeanを探して組み立て、見つけられない場合は例外を投げます。
 (3)typeを指定したら、文脈からタイプマッチングの唯一のbeanを見つけて組み立てを行い、見つけられない或いは複数を見つけたら、いずれも異常を投げます。
 (4)nameが指定されておらず、typeも指定されていない場合、自動的にbyName方式で組み立てられます。マッチしていない場合は、元のタイプに戻してマッチングします。マッチングすれば自動的に組み立てられます。
 
@Resourceはフィールドと関数に作用することができます。例は以下の通りです。
@Resource
private UserDao userDao;

@resource
public UserService(UserDao userDao)
 
@Resourceの役割は@Autowiredに相当しますが、@AutowiredはbyTypeで自動注入されます。