在這種情況下使用@Autowire是指示Spring容器通過使用名稱與RootResource中的屬性名稱匹配的bean來將依賴關係注入RootResource。
這與使用XML配置的bean元素的autowire屬性類似。假設RootResource有
@Singleton
@Controller
@Autowire(mode = AutowireMode.BY_NAME)
@Path("/")
public class RootResource{
private SomeService someService;
private AnotherService anotherService;
public void setSomeService(SomeService someService){
this.someService = someService;
}
public void setAnotherService(AnotherService anotherService){
this.anotherService = anotherService;
}
}
容器將嘗試查找名爲someService和anotherService的bean,並嘗試設置相應的屬性。請注意,您不需要依賴注入屬性或字段級別的註釋。
您可以使用@Resource/@Autowired來實現同樣的目的。但是在這種情況下,您必須註釋字段或設置者。並且還如果依賴未在容器發現注射將失敗
@Singleton @Controller @Autowire(模式= AutowireMode.BY_NAME) @Path( 「/」) 公共類RootResource {
private SomeService someService;
private AnotherService anotherService;
@Resource
public void setSomeService(SomeService someService){
this.someService = someService;
}
@Resource
public void setAnotherService(AnotherService anotherService){
this.anotherService = anotherService;
}
}
@Resource將使用bean的名稱和回落到類型匹配,同時@Autowired總是使用類型匹配
還要注意的是@Autowire和@Autowired有不同的行爲。 RootResource bean不需要在應用程序上下文中明確配置。它將由組件掃描儀自動檢測,因爲它具有原型註釋,即@Controoler