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