我有一个服务接口UserService和一个实现类UserServiceImpl。当我尝试将UserServiceImpl注入到控制器类中的变量时,它会抛出NoSuchBeanDefinitionException。但是当我注入UserService接口时,它工作得很好。
接口UserService用@Service注释。实现类没有任何这样的注释。
为什么会发生这种情况?
实现应该有注释。不是界面。控制器应该依赖于接口,而不是实现。这将允许Spring注入AOP代理,允许事务、安全性等:
public interface UserService {
...
}
@Service
public class UserServiceImpl implements UserService {
...
}
@Controller
public class UserController {
@Inject
private UserService userService;
...
}