2016-02-01 32 views
0

大家好,我申请工作正常,但在延长我的经理和DAO接口,我得到的错误。我试图解决方案(改变<context:component-scan base-package="com.controller" /><context:component-scan base-package="com" />)张贴在各岗位但给我stackOverflowError。我认为扩展接口时需要一些注释,但我不知道应该在那里使用哪些注释。请指引我上无法延长DAO和Manager界面自动装配领域

//控制器

@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接口并实现了一套

​​

// 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)}` 

回答

0

与计算器的问题发生,因为这个代码

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

对于这种现象的原因是,它有一个递归依赖性这是永远不会解决。服务需要具有相同bean配方的另一个服务。 另外,@autowired注释用于解决依赖类型。这意味着拥有2个具有保存类型的实例化bean将导致错误,因为spring无法理解您真正需要的bean。在这种情况下,您可以使用@Resource(byName)或将@Qualifier注释与您需要的bean名称一起使用。

+0

感谢的人它的作品! – Ishan