Skip to main content

spring_core_dart 0.3.2 copy "spring_core_dart: ^0.3.2" to clipboard
spring_core_dart: ^0.3.2 copied to clipboard

Spring Core for Dart and Flutter: annotation-based dependency injection, application.properties configuration, profiles, events, SpEL, validation and AOP.

example/main.dart

// A tour of spring_core_dart in a Spring Boot application: beans are
// annotated classes, dependencies come through constructors, settings
// through @Value, and events through @EventListener. The generator writes
// the bean definitions (main.spring.dart, from `dart run build_runner
// build`).
//
//   dart run example/main.dart
//   dart run example/main.dart '--greeting.punctuation=?'
import 'package:spring_boot_dart/spring_boot_dart.dart';

import 'main.spring.dart';

/// Several implementations can stand behind one interface.
abstract interface class Greeter {
  String greet(String name);
}

@Component()
class EnglishGreeter implements Greeter {
  /// A setting, with its default after the colon.
  EnglishGreeter(@Value(r'${greeting.punctuation:!}') this.punctuation);

  final String punctuation;

  @override
  String greet(String name) => 'Hello, $name$punctuation';
}

/// An application event: any object.
class UserRegistered {
  const UserRegistered(this.name);

  final String name;
}

@Service()
class Registration {
  Registration(this.greeter, this.events);

  final Greeter greeter;
  final ApplicationEventPublisher events;

  String register(String name) {
    events.publishEvent(UserRegistered(name));
    return greeter.greet(name);
  }
}

@Component()
class WelcomeMail {
  @EventListener()
  void onRegistered(UserRegistered event) =>
      print('event: ${event.name} registered');
}

@Component()
class Tour implements CommandLineRunner {
  Tour(this.registration, @Value('#{2 * 21}') this.answer);

  final Registration registration;

  /// A SpEL expression, evaluated once.
  final int answer;

  @override
  void run(List<String> args) {
    print(registration.register('Ada'));
    print('answer: $answer');
  }
}

@SpringBootApplication()
void main(List<String> args) => runApplication(args);
0
likes
0
points
771
downloads

Publisher

verified publisherfarum-azula.org

Weekly Downloads

Spring Core for Dart and Flutter: annotation-based dependency injection, application.properties configuration, profiles, events, SpEL, validation and AOP.

Repository (GitHub)
View/report issues

Topics

#dependency-injection #inversion-of-control #configuration #aop #spring

License

unknown (license)

Dependencies

yaml

More

Packages that depend on spring_core_dart