@Autowired Spring 3中的注释行为

Ayu*_*man 2 spring annotations java-ee

我想了解@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;
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

bean在我的Spring applicationContext.xml文件中声明:

<bean id="workflowDAO" class="com.test.WorkFlowDAO">
</bean>
Run Code Online (Sandbox Code Playgroud)

仔细检查后,您可以看到Java类中的两个ID和上下文XML文件是不同的.

workFlowDAO

workflowDAO

[字母'f'在两个ID中不同]

由于我的应用程序即使使用此配置也运行良好; 我想知道,@Autowired注释如何工作,以便在bean ID不完全匹配时不会抱怨.

如果使用简单的bean; Spring会抱怨bean名称不匹配.

我在Websphere App Server 7.0上运行Spring 3.0.5的J2EE应用程序

如果需要更多信息,请与我们联系.

tob*_*yer 6

@Autowired按类型匹配bean.不考虑该ID.

如果在XML配置中声明另一个相同类型的bean,Spring会抱怨无法确定正确的bean.

如果您想与ID一起使用@Autowired,可以通过利用@Qualifier虽然@Resource在这种情况下推荐使用.

此处查找有关该主题的更多信息.