0

サービス インターフェイスUserServiceと実装クラスUserServiceImplがあります。コントローラー クラスの変数にUserServiceImplを注入しようとすると、 NoSuchBeanDefinitionExceptionがスローされます。しかし、UserServiceインターフェイスを挿入すると、正常に動作します。

インターフェースUserServiceには@Serviceアノテーションが付けられています。実装クラスには、そのような注釈はありません。

なぜこれが起こっているのか混乱していますか?

4

1 に答える 1

1

実装には注釈が必要です。インターフェイスではありません。また、コントローラーは実装ではなく、インターフェイスに依存する必要があります。これにより、Spring は AOP プロキシを挿入し、トランザクション、セキュリティなどを可能にすることができます。

public interface UserService {
    ...
}

@Service
public class UserServiceImpl implements UserService {
    ...
}


@Controller
public class UserController {
    @Inject
    private UserService userService;

    ...
}
于 2013-03-30T07:55:35.690 に答える