簡體   English   中英

Spring 3中的@Autowired注釋行為

[英]@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM