Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20241205 DIコンテナ

Avatar for saka saka
December 23, 2025
2

20241205 DIコンテナ

Avatar for saka

saka

December 23, 2025

Transcript

  1. const clientManager = new PrismaClientManager(); const transactionManager = new PrismaTransactionManager(clientManager);

    const bookRepository = new PrismaBookRepository(clientManager); const registerBookApplicationService = new RegisterBookApplicationService( bookRepository, transactionManager );
  2. const clientManager = new PrismaClientManager(); const transactionManager = new PrismaTransactionManager(clientManager);

    const bookRepository = new PrismaBookRepository(clientManager); const registerBookApplicationService = new RegisterBookApplicationService( bookRepository, transactionManager ); ͜Ε͕
  3. @injectable() export class RegisterItemApplicationService { constructor( @inject("IItemRepository") private readonly itemRepository:

    IItemRepository, @inject("ITransactionManager") private readonly transactionManager: ITransactionManager ) {} ུ }
  4. // TransactionManager container.register("ITransactionManager", { useClass: SimpleTransactionManager, }); // Repository container.register(

    "IItemRepository", { useClass: InMemoryItemRepository, }, { lifecycle: Lifecycle.ResolutionScoped, } );