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

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

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

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

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

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

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

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

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

from app import app

@app.rest(prefix = '/hello')
class HelloController:
    def __init__(self, service: GreetingService):
        self.service = service

    @get('/')
    async def index(self) -> JSONResponse:
        return JSONResponse({
            'message' : self.service.build_message()
        })

Что это даёт

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

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