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;