@Controller

@Controller() marks a class as a bean of the presentation layer.

Why

In this package it does exactly what @Component does. It suits objects that drive a user interface, such as the logic behind a Flutter screen or a view model. The web starter (spring_boot_starter_web) gives it its request-handling meaning.

Use it so that a reader sees at once which classes belong to the UI side, and so that scan filters and pointcuts can select them.

Example

import 'package:spring_core_dart/spring_core_dart.dart';

@Service()
class AuthService {
  bool login(String user, String password) => password.isNotEmpty;
}

// The login screen's logic, with the auth service injected.
// The widget only calls submit() and reads error.
@Controller()
class LoginController {
  LoginController(this.auth);

  final AuthService auth;
  String? error;

  bool submit(String user, String password) {
    final ok = auth.login(user, password);
    error = ok ? null : 'Wrong user name or password';
    return ok;
  }
}

Parameters

Name Type Default Meaning
name (positional) String? null The bean name. null gives the class name in lowerCamelCase.

In Spring (Java)

@Controller
class LoginController {
  LoginController(AuthService auth) { ... }
}

In Spring MVC a @Controller handles web requests. In spring_core_dart alone it is only a stereotype. Request handling comes from the web starter.

See also