代码之家  ›  专栏  ›  技术社区  ›  Arthur

beannotofRequiredTypeException:名为x的bean应该是x类型,但实际上是'com.sun.proxy.$proxy'类型。

  •  4
  • Arthur  · 技术社区  · 6 年前

    我有这样的课程和春季背景。

    如何修复这个错误的Java配置,而不是XML?

    我试过其他职位的一些解决方案,但没有成功。

    @Service
    @Transactional
    public class XCalculationService implements VoidService<X> {
    }
    
    public interface VoidService<Input> {
    }
    
    @AllArgsConstructor
    public class XService {
    private XCalculationService calculationService;
    }
    
    @Configuration
    public class ServiceConfiguration {
    @Bean
    public OrderService orderService(XCalculationService calculationService) {
        return new XService(calculationService);
    }
    
    @Bean
    public XCalculationService calculationService() {
        return new XCalculationService ();
    }
    }
    

    误差

    BeanNotOfRequiredTypeException: Bean named 'calculationService' is expected to be of type 'com.x.XCalculationService' but was actually of type 'com.sun.proxy.$Proxy
    
    2 回复  |  直到 6 年前
        1
  •  7
  •   Arthur    6 年前

    以下是100%修复:

    @EnableTransactionManagement(proxyTargetClass = true)
    
        2
  •  1
  •   mrkernelpanic    6 年前

    我想你已经 @ComponentScan 在某个激活的地方,它扫描你的 @Service 注释的 XCalculationService 班级。

    所以你应该 要么删除 @服务 X计算服务

    去除

    @Bean
    public XCalculationService calculationService() {
        return new XCalculationService ();
    }
    

    ServiceConfiguration