Skip to main content

spring_core_dart_generator 0.1.0 copy "spring_core_dart_generator: ^0.1.0" to clipboard
spring_core_dart_generator: ^0.1.0 copied to clipboard

Code generator for spring_core_dart: turns @Component, @Bean, @Value, @Aspect and other annotations into bean definitions, metadata and AOP proxies.

example/example.md

Example #

pubspec.yaml:

dependencies:
  spring_core_dart: ^0.1.0

dev_dependencies:
  build_runner: ^2.17.0
  spring_core_dart_generator: ^0.1.0

lib/src/beans.dart — the scan root (everything under lib/src/ is scanned):

import 'package:spring_core_dart/spring_core_dart.dart';
import 'package:my_app/src/beans.beans.dart';

@ComponentScan()
final BeanModule appBeans = $appBeans;

lib/src/greeting.dart:

import 'package:spring_core_dart/spring_core_dart.dart';

abstract interface class Greeter {
  String greet(String name);
}

@Service()
class EnglishGreeter implements Greeter {
  EnglishGreeter(@Value(r'${greeting.suffix:!}') this.suffix);

  final String suffix;

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

Run the generator:

dart run build_runner build

It writes lib/src/beans.beans.dart (simplified):

final BeanModule $appBeans = BeanModule('appBeans', [
  BeanDefinition<EnglishGreeter>(
    name: 'englishGreeter',
    types: const [EnglishGreeter, Greeter],
    dependencies: const [Dependency.value(r'${greeting.suffix:!}')],
    create: (r) => EnglishGreeter(r.value<String>(r'${greeting.suffix:!}')),
    aopProxy: AopProxyFactory(...),
  ),
]);

Use it:

void main() {
  final context = ApplicationContext.run([appBeans]);
  print(context.getBean<Greeter>().greet('Ada')); // Hello, Ada!
  context.close();
}

A complete example with every feature lives in the repository: https://github.com/farum-azula/spring_core_dart/tree/main/example.

0
likes
0
points
772
downloads

Publisher

verified publisherfarum-azula.org

Weekly Downloads

Code generator for spring_core_dart: turns @Component, @Bean, @Value, @Aspect and other annotations into bean definitions, metadata and AOP proxies.

Repository (GitHub)
View/report issues

Topics

#dependency-injection #code-generation #build-runner #aop #spring

License

unknown (license)

Dependencies

analyzer, build, code_builder, dart_style, glob, path, pub_semver, source_gen

More

Packages that depend on spring_core_dart_generator