Исключение ClassCast при попытке набрать динамический пружинный прокси для интерфейса - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть интерфейс BaseDao и другие специфичные для сущности интерфейсы Dao, которые расширяют BaseDao.

public interface BaseDao<T extends RandomClass> {
 // some methods
}


public interface FooDao extends BaseDao<RandomClassImpl1>  {
// some methods
}

@Lazy
@Component(“fooDao”)
public class FooDaoImpl implements FooDao {

}

public interface BarDaoextends BaseDao<RandomClassImpl2>  {
// some methods
}

@Lazy
@Component(“barDao”)
public class BarDaoImpl implements BarDao {

}

Я также создал конфигурацию, в которой я создал бин, который возвращает карту, в которой имя компонента dao является ключом, а компонентом dao является значение.

@Lazy
@Configuration
@Import({BarDaoImpl.class, FooDaoImpl.class })
public class DaoRepositoryConfig {

    @Bean(DAO_REPOSITORY)
    Map<String, BaseDao> DaoRepository(
            @Lazy @Qualifier(“fooDao”)
             BaseDao<RandomClassImpl1> foo,
            @Lazy @Qualifier(“barDao”)
             BaseDao<RandomClassImpl2> bar
    ) {
        Map<String, BaseDao> daoRepository = new HashMap<>();
        daoRepository.put(“fooDao”, foo);
        daoRepository.put(“barDao”, bar);
        return daoRepository;
    }

}

Когда я загружаю этот компонентЯ получаю карту имен Dao и динамического прокси соответствующей реализации, которую я импортировал в конфигурации.

Но когда я пытаюсь набрать приведение прокси к непосредственному родительскому интерфейсу, он завершается неудачей с ClassCastException.

(FooDao).брошен.

...