将弹簧从3.2升级到4 - 使用泛型问题(扩展)

时间:2014-01-31 06:35:56

标签: spring exception generics spring-4

我有以下代码与spring 3.2一起使用,并在spring 4.0.0.RELEASE

上失败并出现“NoSuchBeanDefinitionException”
    
    public interface Cacheable {
    }

    public class TimeUnit implements Cacheable {
    }

    @Component
    public class UserDao<T extends Cacheable> {


        public void performDBOperation() {
            System.out.println("Executing db operation");
        }
    }

    @Component
    public class UserService {
         @Autowired
         private UserDao<TimeUnit> timeUnitUserDao;

         public void someService() {
             timeUnitUserDao.performDBOperation();
         }
    }



当我在UserDao类声明中包含T extends Cacheable时,由于泛型而失败。完整的例外是

“NoSuchBeanDefinitionException:找不到类型为[spring.generics.UserDao]的限定bean的依赖关系:期望至少有一个bean可以作为此依赖关系的autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation .Autowired(required = true),@ org.springframework.beans.factory.annotation.Qualifier(value = userdao)}“

如果宣言只是UserDao&amp; lt T&amp; gt,那么一切正常。

关于应该修复什么的任何意见/建议?

1 个答案:

答案 0 :(得分:0)

此问题已在Spring 4.0.1中解决