Ответ
Да, класс, помеченный аннотацией @Controller (или @RestController), является Spring-бином. Аннотация @Controller — это стереотипная аннотация, помеченная как @Component, поэтому она автоматически обнаруживается при сканировании компонентов и регистрируется в контексте приложения Spring IoC.
Почему это бин:
- Управляется контейнером Spring (создание, внедрение зависимостей, lifecycle).
- Может использовать
@Autowiredдля инъекции зависимостей. - Может быть целью для Spring AOP (например, для
@ExceptionHandler,@ModelAttribute).
Пример:
@Controller
@RequestMapping("/api")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
return ResponseEntity.ok(userService.findById(id));
}
}