FwInjectable
Injecao de dependencia em TLPP. Decorator @Inject obtem instancia gerenciada do framework. Padrao DI moderno.
Assinatura: @Inject(service) public ServiceClass field
Retorna: NIL (decorator)
TLPP suporta Dependency Injection via decorator @Inject. Em vez de instanciar manualmente, framework cria/reusa instancias.
Sintaxe
@Injectable()
class ClienteService
method buscar(cId) class ClienteService
SA1->(DBSetOrder(1))
If SA1->(DBSeek(xFilial("SA1") + cId))
Return AllTrim(SA1->A1_NOME)
EndIf
Return ""
endmethod
endclass
class PedidoController
@Inject() data oCliService as ClienteService
method criarPedido(cCliente) class PedidoController
cNome := ::oCliService:buscar(cCliente)
ConOut("Cliente: " + cNome)
endmethod
endclass
Pegadinhas
- @Injectable obrigatorio na classe alvo.
- Em versoes mais antigas TLPP, @Inject pode nao funcionar — checar release.
- Cuidado com ciclos de dependencia — A injeta B que injeta A.