Я использую JayStack OData-v4-Server
от JayData. Я хочу реализовать Inversify в качестве DI-фреймворка. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу объявить все свои зависимости в одном месте, потому что мне приходится вручную вызывать контейнер DI в каждом ODataController.
Я хочу внедрить зависимости контроллера через его конструктор, напримерв UserInteractor. Итак, контроллеры должны быть аннотацией @injectable
, и мне нужно внедрить зависимости в ODataServer, но инициализация осуществляется через аннотацию @odata.controller
.
Есть ли хороший способ использовать лучшие практики Inversify с фреймворком JayStack OData?
index.ts
...
app.use(ENDPOINT_ODATA, MyODataServer.create());
app.listen(PORT, () => {
console.log(`Example app listening on port ${PORT}!`)
});
MyODataServer.ts
@odata.controller(UserController, true)
export default class MyODataServer extends ODataServer {
}
UserController.ts
export default class UserController extends ODataController {
private static userService: UserInteractor = container.get<UserInteractor>(UserInteractor);
...
}
UserInteractor.ts
@injectable()
export class UserInteractor {
public constructor(
@inject(InterfaceTypes.UserRepo) private readonly userRepo: IUserRepo
) {}
...
}