Springにおけるresourceとautowireの違い

1236 ワード

  • @AutowiredのデフォルトbyTypeは自動的に注入され、インスタンスの結果が一意でない場合、例外
  • が放出されます.
    @Autowiredは@Qualifier(「beanName」)と組み合わせて使用でき、指定されたbeanを注入します.
    @Autowired
    @Qualifier("baseDao")
    private BaseDao baseDao;
    

    たとえば、同じインタフェース、2つのインプリメンテーションクラスであれば、この方法で注入を指定できます.@Autowired(required=false)は、springコンテキストにこのタイプのbeanが見つからない場合に使用されることを示す.
    new SoftPMServiceImpl();
    
    private ISoftPMService softPMService = new SoftPMServiceImpl();
    
  • @ResourceのデフォルトはbyNameで自動的に注入されますが、@Resourceにはnameとtypeの2つの属性が重要です.nameプロパティを使用する場合はbyNameの自動注入ポリシーを使用します.typeプロパティを使用する場合はbyType自動注入ポリシーを使用します.

  • @Resourceアセンブリ順序1.nameとtypeを同時に指定した場合、Springコンテキストから唯一一致するbeanを見つけてアセンブリし、見つからない場合は例外を投げ出す2.nameを指定した場合、コンテキストから名前(id)が一致するbeanを探してアセンブリし、見つからない場合は例外を投げ出す3.typeを指定した場合、コンテキストからタイプが一致する唯一のbeanを見つけて組み立てると、見つからないか、複数見つけられないか、異常が投げ出されます.4.名前もtypeも指定されていない場合は、byName方式で自動的に組み立てる.一致しない場合は元のタイプに戻り、一致する場合は自動的にアセンブリされます.
    使用方法は次のとおりです.
    //@Resource(name="dataSource");
    
    @Resource(type="DataSource.class");
    
    @Resource
    private DataSource dataSource;
    //inject the bean named 'dataSource';
    
  • @Autowiredはspring独自定義の注記、@ResourceはJ 2 EE、JSR-250仕様定義