Начало работы

Страница в разработке

Эта страница документации активно дополняется и уточняется.

Внедрение сервиса

Внедряйте сервис в контроллер вместо ручной сборки объектов.

Начало работыПервый сервис

Autumn использует явное объявление зависимостей через конструктор.
Если контроллеру требуется сервис, достаточно указать его в __init__ — контейнер автоматически передаст нужный экземпляр.

Контроллер + сервис

from autumn.controller import REST, get
from autumn.response import JSONResponse

from app.services.greeting import GreetingService

@REST(prefix = '/hello')
class HelloController:
    def __init__(self, service: GreetingService) -> None:
        self.service = service
    
    @get('/{name:str}')
    async def hello_by_name(self, name: str) -> JSONResponse:
        return JSONResponse({
            'message' : self.service.build_message(name)
        })

Что это даёт

  • Зависимости явно описаны в конструкторе
  • Контроллер не отвечает за создание сервисов
  • DI-контейнер управляет жизненным циклом объектов

Это и есть подход Autumn: зависимости остаются явными, а связывание компонентов выполняется автоматически.