@Autowireと@Resourceの注釈の違い

1625 ワード

記事の目次
  • 紹介します.
  • 詳細解
  • @Autowire
  • @Resource
  • 比較
  • 総括
  • 紹介する
    @Autowireと@ResourceはともにSpringでサポートされている注釈方式で、動的にbeanを組み立てます.
    詳しく説明する
    @Autowire
    @Autowireデフォルトではタイプ(by-type)で組み立てられていますが、デフォルトでは依存対象が必要です.
  • 依存対象がnullであることを許可する場合、required属性がfalseであること、すなわち
  • を設定する必要がある.
    @Autowire(required=false)
    private InjectionBean beanName;
    
  • 名称(by-name)に従って組み立てる場合、@Qualfier注解と組み合わせて使用する必要があります.すなわち、
  • です.
    @Autowire
    @Qualifier("beanName")
     private InjectionBean beanName;
    
    説明
    @Autowireは名称(by-name)で組み立てると@Autowire+@qualifer(')=@Resource(name=")
    @Resource
    @Resourceデフォルトは名称(by-name)で組み立てられており、名称はname属性で指定できます.
  • 指定がない場合は、name
  • は、注釈がフィールド上にある場合、デフォルトではname=フィールド名の組み立てを行う.
  • .setter方法に注釈がある場合、デフォルトではname=属性名組立.
  • 名称(by-name)で組み立てられていない場合は、タイプ(by-type)で組み立てられます.
  • 指定されたname属性が表示されると、名称(by-name)のみで組み立てることができます.
    @Resoure組立手順
  • nameとtypeの属性を同時に指定すると、唯一のマッチングのbean組立が見つかり、見つからないと投げ異常が発生します.
  • name属性を指定すると、名前(by-name)に従って組み立てられ、見つからないなら異常を投げます.
  • type属性を指定すると、タイプ(by-type)に従って組み立てられ、複数が見つからないか、見つかったら投げ異常が発生します.
  • は、name属性が指定されておらず、type属性が指定されていない場合は、名称(by-name)で組み立てられ、見つからない場合は、タイプ(by-type)で組み立てられます.
    比較
    比較項目
    @Autowire
    @Resource
    注解元
    Springコメント
    JDKコメント(JSR-250標準注、J 2 EEに属します)
    組み立て方式
    優先的にタイプによる
    優先的に名前で
    属性
    required
    name、type
    作用範囲
    フィールド、セット方法、コンストラクタ
    フィールド、セット方法
    説明:
    作用範囲はフィールド上にあります.setterメソッドを書く必要はありません.
    締め括りをつける
    おすすめは@Resourceです.
  • 注釈はJ 2 EEに属し、Springとの結合を減らす
  • .