Skip to content

Services

Services are classes known by the container that provide functionality.

Contrary to static utility classes or methods they usually rely on other services or parameters to provide a part of their functionality.

Examples refer to the default container provided by the library in wireup.container but any other instance can be used in its place. The process is meant to be simple and the short Quickstart page shows by example and already contains all the key concepts you need to know about.

Registration

Declaration and usage of services is designed to be as simple as possible. They may live anywhere in the application but must be registered with the container.

To register a class as a service the following options are available.

  • Decorate the class using the container.register.
  • Call container.register(YourService) directly on the service.
  • Use container.register_all_in_module. (See: Manual Configuration)

Injection

The container will perform autowiring based on the type hints given. No manual configuration is needed to inject services.

To perform autowiring the method to be autowired must be decorated with @container.autowire. Given the nature of Python decorators it is also possible to simply call it as a regular function which will return a callable with arguments the containers knows about already bound.