无法在扩展 DAO 和管理器接口时自动装配字段

Could not autowire field on extending DAO and Manager interface

您好,我的应用程序运行良好,但在扩展我的管理器和 Dao 接口时出现错误。我已经尝试了在各种帖子中发布的解决方案(将 <context:component-scan base-package="com.controller" /> 更改为 <context:component-scan base-package="com" />),但这给了我 WhosebugError 。我认为在扩展接口时需要一些注释,但我不知道应该在那里使用什么注释。请指导我

//控制器

@Controller
public class Controller {

    @Autowired
    private Manager2<Entity> manager;

//管理接口和实现

public interface Manager1 <T> {
    public void add(T entity);
    public List<T> getAll();
    public T getById(Integer id);
    public void delete(Integer id);
    public void update(T entity);
}

public interface Manager2<T> extends  Manager1<T>  {
    public List<Entity> getList(int Id);
}

@Service
public class ManagerImpl implements Manager2<Entity>  {
    @Autowired
    private Manager2<Entity> dao;
}

//Dao 接口和实现

public interface DAO1 <T> {
    public void add(T entity);
    public List<T> getAll();
    public T getById(Integer id);
    public void delete(Integer id);
    public void update(T entity);
}

public interface DAO2<T> extends  DAO1<T>  {
    public List<Entity> getList(int Id);
}

public class DaoImpl implements DAO2<Entity>  {
    @Autowired
    private SessionFactory sessionFactory;
}

//声明在servlet.xml

<context:component-scan base-package="com.controller" />
<bean id="dao" class="com.dao.DaoImpl"></bean>
<bean id="manager" class="com.service.ManagerImpl"></bean>

//来自日志文件的错误

nested exception is `org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.service.Manager2] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}`

Whosebug 的问题是因为这段代码

@Service
public class ManagerImpl implements Manager2<Entity>  {
    @Autowired
    private Manager2<Entity> dao;
}

此行为的原因是它存在一个从未解决的递归依赖关系。服务需要具有相同 bean 配方的另一项服务。 此外,@autowired 注释用于按类型解析依赖关系。这意味着拥有 2 个保存类型的实例化 bean 会导致错误,因为 spring 无法理解您真正需要的 bean。在这种情况下,您可以使用 @Resource (byName) 或添加带有您需要的 bean 名称的 @Qualifier 注释。