【发布时间】:2014-02-12 02:38:21
【问题描述】:
我正在使用 Java 和 Spring 开发一个 Web 应用程序。我是 Spring 的新手,所以作为一个学习的机会,我基本上得到了一个现有的应用程序,并被告知要扩展它。 我无法理解 @Autowired 的工作原理。我了解依赖注入的高级概念,但我想知道@Autowired注解如何知道要注入哪个接口的具体实现?
为了把我的问题放在上下文中,我将解释我遇到的问题:
我有一个名为 PostDao 的接口,以及一个名为 PostDaoImpl 的 类,它实现了 PostDao。然后我有另一个名为 PostDaoPublicImpl 的 类,它扩展了 PostDaoImpl。这些类存在于我的持久层中。
然后我有一个名为 PostService 的 interface,以及一个名为 PostServiceImpl 的 类,它们实现了 邮政服务。然后我有另一个名为 PostServicePublicImpl 的 类,它扩展了 PostServiceImpl。这些类存在于我的服务层中。
在 PostServiceImpl 中,以下行注入以下对象:
@Autowired private PostDao postDao;
//This injects an object of the class PostDaoImpl
我的问题是,在 PostServicePublicImpl 中我如何拥有与上述相同的声明,但让它注入类 PostDaoPublicImpl 的对象:
@Autowired private PostDao postDao;
//This injects an object of the class PostDaoPublicImpl
我觉得好像我理解了@Autowired 注解的工作原理,那么我将能够解决这个问题。任何解决问题的帮助和建议将不胜感激。
【问题讨论】:
标签: java spring spring-mvc dependency-injection autowired