我想了解@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
[字母'f'在两个ID中不同]
由于我的应用程序即使使用此配置也运行良好;我想知道,
@Autowired
注释如何工作,以便在bean ID不完全匹配时不会抱怨。
如果使用简单的bean; Spring会抱怨bean名称不匹配。
我在Websphere App Server 7.0上运行带有Spring 3.0.5的J2EE应用程序
如果需要更多信息,请与我们联系。
答案 0 :(得分:6)
@Autowired
按类型匹配bean。不考虑该ID。
如果在XML配置中声明了另一个相同类型的bean,Spring会抱怨无法确定正确的bean。
如果您想将ID与@Autowired
一起使用,可以使用@Qualifier
来实现,但在这种情况下建议使用@Resource
。
查找有关该主题的更多信息here。
答案 1 :(得分:1)
完全同意第一条评论。
如果您希望通过名称自动装配bean,可以考虑使用@Qualifier(“givenName”)。
查看所有详细信息:
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html