Java Spring错误:BeanNotOfRequiredTypeException

Java Spring错误:BeanNotOfRequiredTypeException,java,spring,dependency-injection,Java,Spring,Dependency Injection,我的控制器包含以下注释: @Resource(name="userService") private UserDetailsServiceImpl userService; 服务本身具有以下功能: @Service("userService") @Transactional public class UserDetailsServiceImpl implements UserDetailsService { @Resource(name = "sessionFactory")

我的控制器包含以下注释:

@Resource(name="userService")
private UserDetailsServiceImpl userService;
服务本身具有以下功能:

@Service("userService")
@Transactional
public class UserDetailsServiceImpl implements UserDetailsService {

    @Resource(name = "sessionFactory")
    private SessionFactory sessionFactory;
但是,我在启动时收到以下错误:

注入资源依赖关系 失败;嵌套异常是 org.springframework.beans.factory.BeanNotOfRequiredTypeException: 名为“userDetailsServiceImpl”的Bean 必须是 [myapp.service.UserDetailsServiceImpl],但实际上是 类型[$Proxy19]

更改为(接口而非具体类):

从此幸福地生活

长版本:在运行时,默认情况下,Spring用实现类的所有接口的东西替换类。如果您注入接口而不是具体的类型,那么您不关心实现此接口的确切类型是什么

在您的例子中,添加
@Transactional
注释会导致bean被具有事务功能的AOP代理所取代。如果删除此注释,代码将正常运行。然而,依赖于接口而不是具体的实现是一个好主意。

应该如此

@Resource(name="userService")
private UserDetailsService userService;

Spring使用接口类型进行依赖项注入,而不是实现类型

如果有人想要使用接口中可能未定义的getter或setter,该怎么办?
@Resource(name="userService")
private UserDetailsService userService;