4

私はBaseDAOいくつかのサブクラスを持っています。例えば: UserDaoImpl, OrderDaoImpl,今はBaseService

public abstract class Baservice{

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

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

baseao に実際のサブクラスを渡すことができるように 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

アプリケーションが Bean BaseDAO を見つけることができません。@Component(または@ Service、これについては不明)でBaseDAOに注釈を付ける必要があります

于 2012-05-28T07:36:30.397 に答える
0

使用する@Qualifier("UserDaoImpl")

または使用@Resource(name="UserDaoImpl")

于 2012-05-28T07:33:30.773 に答える