4

我有一个BaseDAO和一些子类,例如:UserDaoImpl,,OrderDaoImpl现在在一个BaseService

public abstract class Baservice{

    @Resource
    private BaseDao basedao;
    //something crud operate.....
}

@Service
public UserService extends BaseService{
   //....
}

如何配置我可以将真正的子类传递给 basedao 的 Spring

我遇到了一个例外

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Injection of resource fields failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.cloudking.trafficmonitor.BaseDAO] is defined: expected single matching bean but found 3: [roleDAO, userDAO
4

3 回答 3

1

看来您有 3 个扩展类,BaseDAO所以它们都是BaseDao(IS A)

您需要使用name 的属性@Resource

例如:

@Component
public RoleDao extends BaseDao{/* some code*/}

@Component
public UserDao extends BaseDao{/* some code*/}

现在如果你想注入UserDao那么

@Resource(name="userDao")
BaseDao baseDao
于 2012-05-28T07:32:32.100 回答
0

采用@Qualifier("UserDaoImpl")

或使用@Resource(name="UserDaoImpl")

于 2012-05-28T07:33:30.773 回答
0

您的应用程序无法找到 bean BaseDAO。您需要用@Component(或@Service,不确定这个)注释BaseDAO

于 2012-05-28T07:36:30.397 回答