Olá Diogo,
na verdade no caso do FinancasContext precisamos adicionar a injeção para adicionar a chamada do método .InRequestScope()
.
O que acontece é se a classe tiver um construtor, seja o default ou um que você criou, o NInject por padrão consegue injetá-la em qualquer lugar sozinho, sem precisar de configuração. Por isso quando no Controller você recebe injetado um DAO, mesmo o DAO não estando configurado o NInject conseguirá instanciá-lo chamando o construtor que recebe o FinancasContext.
Porém vamos supor que o seu controller recebe duas classes DAO diferentes, ambas com construtores que recebem o FinancasContext. Quantos FinancasContext faria sentido o NInject criar? No caso, para não desperdiçar muitas conexões com o banco, seria legal ter 1 FinancasContext criado e o mesmo contexto é usado nos 2 DAOs. O problema é que se a gente não configurar nada o NInject acabaria criando 2 FinancasContext diferentes, um para cada DAO. Só que colocando o kernel.Bind<FinancasContext>().ToSelf().InRequestScope()
configura para que o FinancasContext seja criado apenas 1 vez para cada requisição, por conta do InRequestScope()
.