Начало работы
Страница в разработке
Эта страница документации активно дополняется и уточняется.
Внедрение сервиса
Внедряйте сервис в контроллер вместо ручной сборки объектов.
Начало работыПервый сервис
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: зависимости остаются явными, а связывание компонентов выполняется автоматически.