[英]@Autowired annotations behavior in Spring 3
我想了解@Autowired注釋的工作原理。
import com.test.WorkFlowDAO;
public class ServiceCentralBOImpl implements IServiceCentralBO
{
/**
* Logger for logging functionality.
*/
private static final Log log = LogFactory.getLog(ServiceCentralBOImpl.class);
@Autowired
private WorkFlowDAO workFlowDAO;
.
.
.
}
並且在我的Spring applicationContext.xml文件中聲明了該bean:
<bean id="workflowDAO" class="com.test.WorkFlowDAO">
</bean>
通過仔細檢查,您可以看到Java類中的兩個ID和上下文XML文件是不同的。
workFlowDAO和
workflowDAO
[兩個ID中的字母'f'不同)
因為即使使用此配置,我的應用程序也可以正常運行; 我想知道@Autowired
批注如何工作,以便在bean ID不完全匹配時不會抱怨。
如果使用簡單的bean; Spring本來會抱怨bean名稱不匹配。
我正在Websphere App Server 7.0上運行帶有Spring 3.0.5的J2EE應用程序
讓我知道是否需要更多信息。
@Autowired
按類型匹配bean。 不考慮ID。
如果您在XML配置中聲明了另一個相同類型的bean,Spring將抱怨無法確定正確的bean。
如果要將ID與@Autowired
一起使用,則可以通過@Qualifier
來使用,盡管在這種情況下建議使用@Resource
。
在此處找到有關該主題的更多信息。
完全同意第一條評論。
如果希望按名稱自動連接bean,則可以考慮使用@Qualifier(“ givenName”)。
查看所有詳細信息:
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.